C语言scanf输入字符时用%3c会报栈溢出0



C的char只能是1个字节的字符,而你的scanf的%3c指定了3个字节的宽度,它理论上不能被输入,但编译器不会去判断这种情况(也没有人会这么用),它就可能会引起内存溢出(不同编译器处理会不同的),也可能可以正常运行(gcc就不会报错),但结果肯定不是你想要的,scanf的格式化符,必须符合变量的要求,否则结果是“不可预料"的,
,

C的char只能是1个字节的字符,而你的scanf的%3c指定了3个字节的宽度,它理论上不能被输入

但编译器不会去判断这种情况(也没有人会这么用),它就可能会引起内存溢出(不同编译器处理会不同的),也可能可以正常运行(gcc就不会报错),但结果肯定不是你想要的

scanf的格式化符,必须符合变量的要求,否则结果是“不可预料"的



上一篇: 下一篇:

相关文章:

猜你喜欢: