while(scanf("%d",&n)!=EOF) 我会带着你远行 2021-12-24 15:43 179阅读 0赞 scanf的返回值由后面的参数决定 scanf("%d%d", &a, &b); 如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值为1 如果a和b都未被成功读入,返回值为0 如果遇到错误或遇到end of file,返回值为EOF。 且返回值为int型. 验证: sign=scanf("%d %d",&a,&b); printf("%d %d\\n",a,b); printf("%d\\n",sign); 但是输入“a X”的时候 输出的sign为0 什么时候输出EOF? 在stdio.h中宏定义为-1 按照说明,scanf函数只有在第一个参数为NULL(空指针)的情况下,才可能返回EOF,否则,返回成功格式化并赋值的参数个数(>=0)。 End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。 int c; while ((c = getchar()) != EOF) { putchar(c); } 但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。 Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D);Windows中,Ctrl-Z表示EOF。(顺便提一句,Linux中按下Ctrl-Z,表示将该进程中断,在后台挂起,用fg命令可以重新切回到前台;按下Ctrl-C表示终止该进程。) 那么,如果真的想输入Ctrl-D怎么办?这时必须先按下Ctrl-V,然后就可以输入Ctrl-D,系统就不会认为这是EOF信号。Ctrl-V表示按"字面含义"解读下一个输入,要是想按"字面含义"输入Ctrl-V,连续输入两次就行了 EOF 意思就是 end of file!!!! 你 按按CTRL+D试试 转载于:https://www.cnblogs.com/z360/p/6360877.html
还没有评论,来说两句吧...