提问人:Leon 提问时间:4/20/2020 最后编辑:Leon 更新时间:4/20/2020 访问量:192
键入 Ctrl+Z 两次与仅键入一次
Typing Ctrl+Z twice vs just once
问:
顺便说一句,我正在使用 Windows 和 CodeBlocks IDE。
如果我的代码是(在说明符之前有空格):%d
#include <stdio.h>
int main(void)
{
int num;
printf("Enter a number you want to check is present: ");
while(scanf(" %d",&num)==EOF) // As long as wrong input is present on buffer
{
printf("Please enter valid input...\n");
//clear the input buffer
}
return 0;
}
我必须输入两次(每行一次,不必在行的开头)才能运行案例。Ctrl+Z
while(scanf(" %d",&num)==EOF)
而如果我的代码是:
如果我的代码是(说明符前没有空格):%d
#include <stdio.h>
int main(void)
{
int num;
printf("Enter a number you want to check is present: ");
while(scanf("%d",&num)==EOF) // As long as wrong input is present on buffer
{
printf("Please enter valid input...\n");
//clear the input buffer
}
return 0;
}
我必须输入一次才能运行案例。Ctrl+Z
while(scanf("%d",&num)==EOF)
所以这个问题有 2 个部分:
1)为什么第一个例子需要按两次?我试图参考 https://stackoverflow.com/a/21261742/10701114 但它是针对 UNIX 的,对我来说有点困惑Ctrl+Z
2)为什么说明符前面的空格甚至会导致这样的差异,因为除非它是 ,或者(我是从 https://stackoverflow.com/a/36504282/10701114 那里得到的)否则它无关紧要?%d
%n
%c
%[...]
注意:如果我应该将这 2 个部分作为 2 个问题发布,请发表评论。
更新:我用 gcc 在 cmd 提示符上尝试过这个(我第一次在 cmd 提示符上),同样的问题仍然存在
答: 暂无答案
评论
Ctrl-Z
EOF
Ctrl-Z
Enter
Ctrl-Z
Ctrl-Z
while(scanf(" %d",&num)==EOF)
while(scanf("%d",&num)==EOF)