将字符串倒过来,为什么输入8个以上字符串就不对了?
将字符串倒过来,为什么输入8个以上字符串就不对了?
请把你这个 reverses[] 在 main() 中定义。 不要在子程序中定义,因为在子程序中用的是栈空间,子程序返回就没有了。
供参考:
#include<stdio.h>
#include<string.h>
void reverse(char string[]);
int main()
{
char string[100];
int i=0;
char c;
while((c=getchar())!='!') string[i++]=c;
string[i] = '\0';
printf("%s\n",string);
reverse(string);
return 0;
}
void reverse(char string[])
{
int len = strlen(string);
char reverse[100];
int i=0;
for(i=0;i<len;i++)
reverse[i] = string[len-1-i];
reverse[i] = '\0';
printf("%s\n",reverse);
}
reverse函数里面有用到函数strlen求字符串长度,strlen的参数要求必须是一个以空字符'\0'结束的字符数组,否则会出错。
也就是你要在main函数里面把string[]的最后一个字符赋'\0',也就是楼上的回答。