栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

实例讲解掌握EOF针对scanf和getchar的用法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实例讲解掌握EOF针对scanf和getchar的用法

1.首先介绍EOF 1.1 EOF介绍

EOF全称是End Of File,C语言标准函数库中表示文件结束符

1.2 EOF适用范围

(1)多组输入输出
(2)未知次数循环

2.EOF针对scanf的用法 2.1 模板

while(scanf(“%d”,&n)!=EOF)
//scanf内可输入多组变量,如while(scanf(“%d %c %f”,&a,&b,&c)!=EOF)
//只要scanf输入不出错,该循环将可以无止境进行下去


在此特别强调若使用a=scanf(),那么scanf的返回值是其项的总数,举例说明:

#include 

int 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’分两次输出

3.2 模板

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832573.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号