void fun(char *s) ,函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后

2025-01-08 00:13:38
推荐回答(1个)
回答1:

void fun(char *s)
{
if (!s) //空指针就退出;
{
return ;
}
int n=0;
int k = 0;
int m = 0; //这里需要初始化;
char *pTemp = s;
char cTmp = s[0]; //用来保存第一个字符;
while(*s!='\0') //为什么不用strlen呢?
{
n=n+1;
s=s+1;
}
k=n; //注意上面循环完成之后s指针已经指向字符串尾;
s = pTemp; //将s指针还原;
if (0 == k)
{
return ; //不包含有效字符就退出;
}
while(m < n) //循环要少一次;
{
*(s + m)=*(s + 1 + m); //指针要变啊,亲..
m++;
}
*(s + k - 1) = cTmp; //之前你的做法错误了,因为第一个字符已经被覆盖了;
}