EOF全称是End Of File,C语言标准函数库中表示文件结束符
1.2 EOF适用范围(1)多组输入输出
(2)未知次数循环
while(scanf(“%d”,&n)!=EOF)
//scanf内可输入多组变量,如while(scanf(“%d %c %f”,&a,&b,&c)!=EOF)
//只要scanf输入不出错,该循环将可以无止境进行下去
在此特别强调若使用a=scanf(),那么scanf的返回值是其项的总数,举例说明:
#includeint main(){ int i,a,b,c,d; scanf("%d",&i); a = scanf("%d %d %d",&b,&c,&d); printf("i=%dn",i);//输出i=1 printf("a=%d",a);//输出a=3 return 0; }
2.2 如何停止循环
2.1 在while内逗号后手动添加循环条件,比如while(scanf(“%d”,&n)!=EOF,n!=0) 设置n!=0为循环条件,如果想结束循环了只需要输入0即可
2.2 在终端手动输入Ctrl+z组合键,再按Enter即可结束循环
3.EOF针对getchar的用法 3.1准备工作了解getchar读取规则与缓冲区的关系,与文章中scanf读取字符规则相同
结合实例理解
最开始缓冲区为空所以gerchar没有数可以读取,处于堵塞状态这时输入a后再输入一个回车键换行,然后此时缓冲区内有一个a和一个’n’,getchar第一次匹配了缓冲区里的a后赋值给变量c,第二次gerchar读取数时此时缓冲区内有一个’n’,于是getchar直接将其赋值给变量c,其后同理
//getchar可以读取整数作为字符’0’~‘9’,但是它一次只能读取一个字符,所以在上图中输入21后,字符’2’和’1’分两次输出
while((c=getchar())!=EOF)
3.2.1 注意事项c=getchar()是一个整体必须要用括号括起来,否则因为关系运算符优先级大于赋值运算符,会先进行getchar()!=EOF运算,而c也就只能被0或1赋值
3.2.2 使用规则输入值时只能通过回车键来结束输入,而getchar将一次读取缓存区中的一个字符
3.3 如何停止循环3.3.1在while内逗号后手动添加循环条件,比如while(scanf(“%c”,&n)!=EOF,n!=‘a’) 设置n!='a’为循环条件,如果想结束循环了只需要输入a即可
3.3.2在终端手动输入Ctrl+z组合键,再按Enter即可结束循环
3.4 实例讲解
如上图第一行中输入了af32t五个字符,并用回车键结束输入,所以此时缓冲区内有六个字符’a’‘f’‘3’‘2’‘t’和’n’,getchar()读取缓冲区并依次匹配将值赋给变量c然后输出,直到缓存区为空,处于堵塞状态等待用户重新输入新的值
//这里将字符以整数形式输出
//'n’的ASCII值为10



