Chinaunix

标题: 字符串数组倒置的问题 [打印本页]

作者: xiaozi16    时间: 2008-03-25 18:42
标题: 字符串数组倒置的问题
帮忙看看这个答案有哪些defect 以及如何改进
#include <stdio.h>

char * stringArray[] =
{"i",
"Am",
"a",
"Boy",
"the",
"end"
};
void reverseString(char * str[],size_t size)
{
        int  i = 0;
        char * ptrtemp ;
        for(;i<size/2;i++)
        {
                ptrtemp = str;
                str = str[size-i-1];
                str[size-i-1] = ptrtemp;       
       
        }
       
               
       
}
int main()
{

       
        size_t size = sizeof(stringArray)/sizeof(stringArray[0]);
       

        printf("the string Array before reverse\n");
        int i = 0;
        for(i = 0; i < size; i++)
        {
                printf("%s\n",stringArray);
        }               
        reverseString(stringArray,size);


        printf("the string Array after reverse\n");

        for(i = 0; i < size; i++)
        {
                printf("%s\n",stringArray);
        }               

        printf("\n");
        exit(0);
}
作者: 77h2_eleven    时间: 2008-03-25 22:19
大概看了一下:有几个地方
1:size_t size = sizeof(stringArray)/sizeof(stringArray[0]);
     其中stringArray是指针,所以sizeof(stringArray) == 4,所以之后的值都不对。
2:reverseString中的指针交换处用的也不对。
作者: xiaozi16    时间: 2008-03-26 09:37
但是我是gdb 调试的时候 sizeof(stringArray) 是24阿
作者: 乱.码    时间: 2008-03-26 10:01
原帖由 77h2_eleven 于 2008-3-25 22:19 发表
     其中stringArray是指针,所以sizeof(stringArray) == 4,所以之后的值都不对。


stringArray是指针数组 sizeof(stringArray) == 24

搂住最终要得到什么结果?
作者: 乱.码    时间: 2008-03-26 10:11
看这个是你想要的不

  1. void reverseString(char * str[], size_t size)
  2. {
  3.     int  i = 0;
  4.     int  j = size-1;
  5.     char * ptrtemp ;
  6.     for (; i < j; i++, j--) {
  7.         ptrtemp = str[i];
  8.         str[i]  = str[j];
  9.         str[j]  = ptrtemp;
  10.     }
  11. }
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2