我在调用scanf()时输入Ctrl-D(EOF),然后忽略下一个scanf

我在调用scanf()时输入Ctrl-D(EOF),然后忽略下一个scanf,c,scanf,stdin,eof,C,Scanf,Stdin,Eof,我在调用scanf()时输入Ctrl-D(EOF),然后忽略下一个scanf #include <stdio.h> int main() { int input; scanf("%d", &input);//I press Ctrl-D when this line scanf("%d", &input);//this line just passed. not read my input. why? return 0; } #包括 in

我在调用scanf()时输入Ctrl-D(EOF),然后忽略下一个scanf

#include <stdio.h>

int main()
{
   int input;
   scanf("%d", &input);//I press Ctrl-D when this line
   scanf("%d", &input);//this line just passed. not read my input. why?
   return 0;

}
#包括
int main()
{
int输入;
scanf(“%d”,&input);//当这行
scanf(“%d”,&input);//这一行刚刚通过。没有读取我的输入。为什么?
返回0;
}
我希望第二次调用scanf()获取输入。
什么是问题?

您的代码似乎没有问题。唯一需要考虑的是记住在两个输入数字的末尾按“return”。我以“更好”的方式重写您的代码:

#包括
int main(){
输入1,输入2;
printf(“第一个数字:”);
scanf(“%i”,&input1);//最后按回车键
printf(“第二个数字:”);
scanf(“%i”,&input2);//最后按回车键
printf(“input1:%i\tinput2:%i\n”,input1,input2);
返回0;
}

你预计会发生什么-它会试图读取超过EOF的内容?@InternetAussie我不想读取超过EOF的内容,我只是读取标准文本@임근영
EOF
代表文件的结尾,即输入流的结尾,这意味着没有更多的数据要从
stdin
读取。“我不想读取超过EOF的数据”它不读取超过EOF的数据,因此这里没有问题。
#include <stdio.h>
int main(){

int input1,input2;
printf("Digit the first number: ");
scanf("%i", &input1);//Press return at the end
printf("Digit the second number: ");
scanf("%i", &input2);//Press return at the end
printf("input1:%i\tinput2:%i\n",input1,input2);
return 0;
}