请问这个字符串翻转函数错在那里?
#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是死循环