数组被毁损

数组被破坏
char szBuff[50] = {0};
fflush(stdin);
scanf("%50s", szBuff);
szBuff[49]='\0';

超过50个字符  做了作用域,就报错。

怎么回事?

我已经用了'\0'了啊.


------解决方案--------------------
我也同意版主的观点。
  你为数组预留的是50个字符的存储空间,用scanf("%50s",szBuffer)给数组赋值时,输入50个字符,系统会自动在第50个字符后加一个空字符'\0',这样前50个字符刚好存储在数组szBuffer中,后面的空字符'\0'则会覆盖掉相邻存储单元中的值,运气好的放,程序照常进行,运气不好的话(相邻存储单元中存放了重要的数据),就会出错。
  数组的边界问题确实不容忽视。
------解决方案--------------------
引用:
Quote: 引用:

为什么要让数组越界啊~~~~
超过了作用域,你在最后一个字符赋值了终止符,自然后面就不输出啊,没报错吧,我编译了一下的(超过50个字符)
不过建议你用fgets,会自动给你加上结束字符的,少用gets,会覆盖掉其他数据的


 看18楼的答案。

你的明显不对

反正信不信由你啊,你看下图灵狗的回帖就知道了
其实你自己可以调试一下就知道了,看下内存的变化情况