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
看这个是你想要的不
void reverseString(char * str[], size_t size)
{
int i = 0;
int j = size-1;
char * ptrtemp ;
for (; i < j; i++, j--) {
ptrtemp = str[i];
str[i] = str[j];
str[j] = ptrtemp;
}
}
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2