为什么无论输入什么输出都是2

为什么无论输入什么字符串都输出2,scanf函数改变数组之后数组发生变化了吗?

img

char s[] = "a";这样初始化s就分配2个元素空间啊。因为你没有指定数组大小,而"a"只有两个元素,一个字符'a',一个字符串结束符。
scanf("%s",s)没有崩溃掉就算幸运的,如果你输入的字符多,那么就输入到非s数组空间去啦

别用sizeof,这是求数组分配多少内存空间
而char s[] = "a"这就是给数组分配2个长度的空间呀
你应该写char s[100],并且改用strlen求字符串长度