下面是引用的fun函数,请帮我看下错哪了
void fun(char*s)
{
int i,j=0,n;
char *t=s;
n=strlen(s);
for(i=n-1;i>0;i--)
t[j++]=s[i];
for(i=0;i<n;i++)
s[i]=t[i];
s[++i]='\0';
}
你这里的*t = s; 只表示定义了一个新指针,还是指向原来s数组存储的空间。
其实完全可以一次循环搞定,第0位置与第n-1个位置互换就行了,依次类推,
n为偶数时,n/2 - 1 与 n/2互换,如n为10,则0-9位置有效,4和5换;
n为奇数时,n/2 - 1 与 n/2 + 1互换,如n为11时,0-10位置有效,5在中间,4和6换;
实际上是循环n/2次,i 与 [(n-1) - i ]互换。
注意的是第n位置是'\0',不用换。
void fun(char*s)这样改就好了:
void fun(char*s)可以之间调用库函数strrev()
你可以这样写:
void srev(char *s)