首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教这个字符串翻转函数错在那里

2012-03-21 
请问这个字符串翻转函数错在那里?#includestdio.hvoidstr_revert(char*p){char*copypwhile(copy++)in

请问这个字符串翻转函数错在那里?
#include   <stdio.h>

void   str_revert(char*   p)
{
char*   copy   =   p;
        while(copy++);
int   l   =   copy-1-p;
for   (int   i   =   0;   i   <   l/2-1;   ++i)
{
char   t   =   p[i];
p[i]   =   p[l-1-i];
p[l-1-i]   =   t;
}
}

void   main()
{
char   a[]   =   "hello ";
str_revert(a);
printf(a);
}

[解决办法]
void str_revert(char* p)
{
//char* copy = p;
//while(copy++);
//int l = copy-1-p;
int l = strlen(p);
int i;
for (i = 0; i < l/2; ++i)
{
char t = p[i];
p[i] = p[l-1-i];
p[l-1-i] = t;
}
}
[解决办法]
如果不用strlen求字符串长度,应该是这样
while(*copy++!=0);;
int l = copy-1-p;

指针是个int,有效的指针(指向一个分配的地址空间)是不会为0的,所以while是死循环

热点排行
Bad Request.