c语言用printf和puts输出字符串,结果为什么会不一样?

您所在的位置:网站首页 c语言puts函数用法和printf c语言用printf和puts输出字符串,结果为什么会不一样?

c语言用printf和puts输出字符串,结果为什么会不一样?

2022-05-14 06:42| 来源: 网络整理| 查看: 265

不用细看代码就知道。字符串以'0'结尾,你5个字符,分配的大小是长度为5的char数组吧?所以不是puts、printf的问题,是你放字符串的数组中没有NULL!所以它就继续打印出栈中的其它局部变量的值,直到遇到NULL。你代码中没有char a[5]的声明,我猜顺序也刚好在char m前面。

char a[6]="(max)" 或为什么不直接写 char *a="(max)" ?

还有,Linux仔仔们可能玩不出楼主这种效果来。不知道楼主用的什么编译器。因为GCC能检查出这类字符串分配空间的问题,启用stack protector,在char a[5]后面放个canary,这个值最低位字节通常是NULL,所以保证了字符串以NULL结尾,puts输出就不会异常。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3