while(scanf("%d",&n)!=EOF)

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试试
时间: 2024-08-04 02:27:03

while(scanf("%d",&n)!=EOF)的相关文章

C++ scanf 函数与EOF 浅析

[摘要] 常常遇到这段代码, while(scanf("%d",&num)!=EOF){...} ,对于 EOF 以及 scanf 函数的返回值始终没有好好研究过,本文将对这个问题进行一下简单的剖析. [正文] [scanf 函数返回值] 1.scanf()函数有返回值且为int型. 2.scanf()函数返回的值为:正确按指定格式输入变量的个数:也即能正确接收到值的变量个数. 3.当scanf函数的第一个变量格式不正确时返回值为0,即,当scanf函数的第n个变量格式不正确时

选择排序---while( scanf("%d",&n)!= EOF)与getchar()简介及其存在的问题,

基本思想: n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空. ②第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区. -- ③第i趟排序 第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n).该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区

雪泥鸿爪-教学中的debug(13) EOF与换行符

http://oj.hi-hi.cn/JudgeOnline/problem.php?cid=1088&pid=9 问题 J: 实验8_5:统计元音字母个数 题目描述 编写一程序,用于统计从键盘输入的字符串中的元音字母(a,A,e,E,i,I,o,O,u,U)的个数. 输入 每行输入一字符串 输出 输出对应字符串中元音字母的个数. 样例输入 abcio efgaeio ak akkkksd 样例输出 3 5 2 学生问, 请问这个错在哪儿?样例输出是正确的啊 1 #include<stdio

getchar() 和 scanf(&quot;%c&quot;)的区别

getchar()和scanf("%c")的功能都是从STDIN读一个字符,单论功能两者没有区别. 但两者的返回值是有区别的: ------------------------------------------------ scanf()的详尽介绍请移步这里. ------------------------------------------------- scanf()的返回值的含义是: On success, the function returns the number of

标准输入的原理:cin与scanf

1.cin 的处理方式 1)如果cin读取整数,会自动忽略换行和空格:遇到文件结束标记,cin  >> a返回的数false int a; while(cin >> a){ cout << a <<endl; } return 0; eg:1, 2, 3 1 2 3 1 a 2 a 1 2 注意:cin读取到'a'字符的时候,如果是cin> (int);那么此时cin返回false, 同时读到变量a中的整数是0:如果是\n\r,那么将自动忽略: 2)

UVa 11111 一般Matrioshka 及 scanf 处理一行

题目:nest,嵌套 思路:思路想通了其实很简单:将负数压栈,遇到输入正数时,检查栈顶元素,如果栈顶是正数,则出栈,一直检查栈顶元素直到栈顶是负数,判断该数和栈顶负数是否为相反数,并判断出栈的那些正数之和是否小于该输入的正数(这个是满足题目中的相加小于m的条件).如果满足,则栈顶负数出栈,输入的正数入栈.这样循环到最后,如果一直匹配则最后栈中只剩一个元素.    思路很清晰,但实现起来比较麻烦,主要是EOF和\n的判断.我一直以为scanf是不能用来辨别一行的,因为它会跳过空白符.看了别人的一篇

gets和scanf区别

scanf 和 gets 读取字符串 深入了解scanf()/getchar()和gets()等函数 scanf与gets函数读取字符串的区别 今天看到一段话,大致是说gets比scanf()快,有点吃惊,搜了一下,scanf()和gets的区别大致有着几条: 1.scanf() 会忽略行开头的所有空格,并以空格.换行符结束输入: 使用getchar()读取scanf语句执行后,缓冲区留下的换行符, gets读入以任何字符开始的字符串,以换行符结束,但之后会丢弃换行符并以'\0'代替: 2. 在

scanf中的%[^\n]%*c格式

scanf中的%[^\n]%*c格式 (2011-02-19 16:12:38) 转载▼ 标签: 控制字符 空白字符 字符串 变量 整数 it 分类: C语言编程 文章转载自http://blog.csdn.net/sun_top/archive/2009/06/02/4235992.aspx scanf 语法:   #include <stdio.h>  int scanf( const char *format, ... ); 类似函数有       int scanf(const cha

杭电ACM 2046 阿牛的EOF牛肉串

我用到了两个数组,d1[n]表示长度为n的牛肉串最后一个字符不是'O',d2[n]表示长度为n的牛肉串最后一个字符是'O'.这样结果就是d1[n]+d2[n]:对于已经得到了长度为n-1的牛肉串,我们可以来讨论在第n个位置放置何种字符的牛肉串. 已得到第n-1个位置的字符 第n个位置需要放置的字符 结果 不是'O' 不是'O' 得到长度为n的,结尾不是'O'的字符串 不是'O' 是'O' 得到长度为n的,结尾是'O'的字符串 是'O' 不是'O' 得到长度为n的,结尾不是'O'的字符串 是'O'