我今天注意到有时当我使用gets函数时,我的编译器只是忽略它.好.这是获取有效的示例:
#include <stdio.h>
void main()
{
char s[50];
gets(s);
puts(s);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我对程序进行这个简单的更改,则会忽略函数gets:
#include <stdio.h>
void main()
{
int n;
printf("dati n:\n");
scanf("%d",&n);
char s[50];
gets(s);
puts(s);
}
Run Code Online (Sandbox Code Playgroud)
"忽略"意味着当我运行程序时,编译器会读取变量,然后退出而不读取我的字符串.为什么会这样?谢谢.
您scanf只会消耗您输入的号码.之后的任何其他内容(包括您键入的回车符/换行符)都会留在IO缓冲区中.
所以gets拿起号码后面留下的东西(可能只是换行符)并立即返回.
评论者指出:不要使用gets.它实际上已从C标准中删除(不再在C11中),因为它从根本上说是不安全的.请fgets改用.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |