C++运行C程序 输入字符串 长于已定义的字符数组长度,PRINTF以后还是能输出所有的字符,这是为什么???

C++运行C程序 输入字符串 长于已定义的字符数组长度,PRINTF以后还是能输出所有的字符,这是为什么???、

这是因为内存读取造成的,比如char num[4]; 你输入google ,cout输出是一直到'\0'结束的, google字符串存储在一段连续的内存上的,她在读取到goog时没有找到'\0',所以会随着g的地址再加上1个字符的长度1,一直读下去,知道结束,。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-19
printf从你给的字符串起始地址开始输出,直到遇到\0为止结束,因此即使你输入的字符串超标了,但系统还没找到\0,它就会继续找下去直到遇到\0为止。而不是到达字符数组的长度就停止了的。
第2个回答  2010-12-19
因为定义的字符数组长度,当输入的字符串长度小于定义时,未占有的空间用\n来填充,如果输入的字符串刚好或超过时,则按输入时那样也就是原样输出!
相似回答