两次的输出为什么不一样

代码如下


#include<stdio.h>
#include<string.h>
char *re;
char* func(char *s);
int main ()
{
    char ch[1000];
    char *x;
    scanf("%s",&ch);
    //printf("%s\n",ch);
    printf("%s",func(ch));

    return 0;
}
char* func(char *s)
{
    char *re;
    char x[1000];
    int lenth,i=0;
    lenth = (int)strlen(s);
    s = s+lenth-1;
    while(i<=lenth)
    {
        if(i==lenth)
            x[i] = '\0';
        else
            x[i]=*(s--);
        i++;
    }    
    re = &x[0];


    return re;
}

func的作用是使输入的字符按照反序排放

当主函数中没有没有printf("%s\n",ch);是输出结果是这样的

img

有printf("%s\n",ch);的时候是这样的

img

求解答是什么原因导致两次输出不一样?

scanf("%s",&ch);g改为scanf("%s",ch);
你这居然还能输入字符串?

scanf("%s",&ch); 改成scanf("%s",ch);