这是我的代码
char c[3];
gets(c);
puts(c);
Run Code Online (Sandbox Code Playgroud)
这里char变量c有3个索引.但如果我输入超过3个字母,那么我的代码打印超过3个字母,我打字.但是怎么可能c一次只能存储3个字符.不是吗?
从以下笔记gets:
在给定足够长的输入字符串的情况下,该函数无法防止目标数组的缓冲区溢出.
因此,如果stdin碰巧有超过3个字符,那么您的代码就是未定义的行为.这是一个更喜欢打电话的好理由:
fgets(c, sizeof(c), stdin);
Run Code Online (Sandbox Code Playgroud)
绝对不会溢出.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |