- 论坛徽章:
- 0
|
原帖由 黑苦咖啡 于 2006-4-6 14:27 发表
Void reverse_string(char *string)
{
char *start = string;
char *end = string;
char temp;
while(*end++) ;
end--;
for( ;start<end;start++,end--){
temp = *start;
*start = *end;
...
好好的一个思路哦!!!学习一下!!!呵呵,不过,确实有一个小问题, 就是在end--;之后 还应该再end--;一次。
因为end在循环到字串结束的时候已经指到'\0'的下一个地址上了,这样的话回退指针end--指的位置也是'\0'的位置,直接赋值给temp,temp再给end的时候,*end就是'\0'.字串第一个字符是'\0'还怎么能够输出后面的东西呢?
所以我觉得回退的时候应该回退两次。
另外楼上的看到问题可能和我想的是一样的,但在在代码里却也少写了一次end--,不过我即使加上了end--,你的结果也不全,只有其中的一部分,但由于我没有用过^=,所以不敢妄加评论。
[ 本帖最后由 hanbing5299 于 2006-4-7 11:19 编辑 ] |
|