这个代码有问题,str是数组的首地址,所以在main函数中,fs(str)就可以了,用fs(&str)是错误的。
错误如下图所示:
相当于把"0123456"传递给了函数,参数s就指向字符串的首地址
函数实现将第一个字符移到最后一位,然后其它字符向前移动一位,但实际代码效果并不是最好。循环中没必要重复*(p-1) = t;将这行放到while循环结束以后就可以了
void fs(char *s)
{
char *p = s+1;
char t = *s;
while(*p)
{
*(p-1) = *p;
p++;
}
*(p-1) = t;
}
int main()
{
char str[10] = "0123456";
fs(str);
printf("%s\n",str);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!