将字符串倒过来,为什么输入8个以上字符串就不对了?

img
将字符串倒过来,为什么输入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',也就是楼上的回答。