我今天注意到,有时当我使用gets函数时,我的编译器会忽略它。 好。这是一个有效的例子:
#include <stdio.h>
void main()
{
char s[50];
gets(s);
puts(s);
}
现在,如果我对程序进行这么简单的更改,则会忽略函数gets:
#include <stdio.h>
void main()
{
int n;
printf("dati n:\n");
scanf("%d",&n);
char s[50];
gets(s);
puts(s);
}
“忽略”意味着当我运行程序时,编译器会读取变量,然后退出而不读取我的字符串。为什么会这样?谢谢。
答案 0 :(得分:5)
您的scanf
仅使用您输入的号码。在包括您输入的回车/换行符之后的任何其他内容都留在IO缓冲区中。
所以gets
选择号码后面留下的内容(可能只是换行符)并立即返回。
评论者注意到:不要使用gets
。它实际上已从C标准中删除(不再在C11中),因为它基本上是不安全的。请改用fgets
。