提问人:orangetimes 提问时间:10/11/2015 最后编辑:Spikatrixorangetimes 更新时间:10/11/2015 访问量:2962
为什么我必须键入 CTRL + Z 3 次才能发送 EOF?
Why do I have to type CTRL + Z 3 times to send EOF?
问:
int x, sum=0;
while(scanf_s("%d", &x) != EOF)
{
sum += x;
}
printf("sum is %d", sum);
return 0;
无论如何输入,我都必须输入+三遍才能打印。我正在使用 VS 2015。CTRLZsum
答:
-2赞
Joel Trauger
10/11/2015
#1
EOF 是一个特殊的常量,只有在读取文件以检查文件末尾时才应使用
End Of the File 就是它所代表的,并且是一种方便的方式来表示它,而无需记住它的实际价值。
按 Ctrl + Z 会导致不同的行为,具体取决于系统。在 Linux 系统上,它会挂起进程。在 Windows 上,它被内核解释为撤消命令。它在 Mac OS 上没有行为,并被 CMD + Z 取代,其功能类似于 Windows Ctrl + Z。
scanf_s
返回一个,即从输入中读取的字符数。int
评论
0赞
Fiddling Bits
10/11/2015
好信息,但这是评论,而不是答案。
0赞
Joel Trauger
10/14/2015
@FiddlingBits 然后发布一个“实际”的答案,而不是抱怨它。他想知道为什么他必须按 Ctrl + Z 3 次。我的回答是因为行为是未定义的。
0赞
Joel Trauger
10/14/2015
@FiddlingBits 如果批评是非建设性的,我不会接受批评,就像你的评论一样。查看我的个人资料,了解人们纠正我的其他地方。如果他们提供正确的答案,而不仅仅是说“你错了”,我会很好。
评论
scanf_s
scanf_s("%d", &x, 1)
%c
%s
%[
#pragma warning (disable : 4996)
scanf
scanf_s