数组被毁损
数组被破坏
char szBuff[50] = {0};
fflush(stdin);
scanf("%50s", szBuff);
szBuff[49]='\0';
超过50个字符 做了作用域,就报错。
怎么回事?
我已经用了'\0'了啊.
------解决方案--------------------
我也同意版主的观点。
你为数组预留的是50个字符的存储空间,用scanf("%50s",szBuffer)给数组赋值时,输入50个字符,系统会自动在第50个字符后加一个空字符'\0',这样前50个字符刚好存储在数组szBuffer中,后面的空字符'\0'则会覆盖掉相邻存储单元中的值,运气好的放,程序照常进行,运气不好的话(相邻存储单元中存放了重要的数据),就会出错。
数组的边界问题确实不容忽视。
------解决方案--------------------
反正信不信由你啊,你看下图灵狗的回帖就知道了
其实你自己可以调试一下就知道了,看下内存的变化情况
char szBuff[50] = {0};
fflush(stdin);
scanf("%50s", szBuff);
szBuff[49]='\0';
超过50个字符 做了作用域,就报错。
怎么回事?
我已经用了'\0'了啊.
------解决方案--------------------
我也同意版主的观点。
你为数组预留的是50个字符的存储空间,用scanf("%50s",szBuffer)给数组赋值时,输入50个字符,系统会自动在第50个字符后加一个空字符'\0',这样前50个字符刚好存储在数组szBuffer中,后面的空字符'\0'则会覆盖掉相邻存储单元中的值,运气好的放,程序照常进行,运气不好的话(相邻存储单元中存放了重要的数据),就会出错。
数组的边界问题确实不容忽视。
------解决方案--------------------
反正信不信由你啊,你看下图灵狗的回帖就知道了
其实你自己可以调试一下就知道了,看下内存的变化情况