第2讲据输入输出的概念

上传人:公**** 文档编号:567594957 上传时间:2024-07-21 格式:PPT 页数:51 大小:213.50KB
返回 下载 相关 举报
第2讲据输入输出的概念_第1页
第1页 / 共51页
第2讲据输入输出的概念_第2页
第2页 / 共51页
第2讲据输入输出的概念_第3页
第3页 / 共51页
第2讲据输入输出的概念_第4页
第4页 / 共51页
第2讲据输入输出的概念_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《第2讲据输入输出的概念》由会员分享,可在线阅读,更多相关《第2讲据输入输出的概念(51页珍藏版)》请在金锄头文库上搜索。

1、浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 第第2讲讲数据输入数据输入/输出的概念输出的概念 1.1.熟熟练练掌掌握握常常用用输输入入输输出出函函数数:scanfscanf、printfprintf、getchargetchar、putcharputchar、getsgets、putsputs等等 2.2.熟熟练练掌掌握握文文件件的的打打开开和和关关闭闭-fopen()-fopen()和和fclosefclose()() 3. 3.熟练掌握文件的基本读写操作熟练掌握文件的基本读写操作 常常用

2、用函函数数:fscanffscanf、fprintffprintf、fgetcfgetc、fputcfputc、fgetsfgets、fputsfputs等等 4. 4.熟练掌握文件的状态检测熟练掌握文件的状态检测-feof()-feof()函数函数幂朝窒缀朝饭歧绅感吊拓导居稳纱摇绝脊僵骗慷对馈鬼剑渝倍弱秒仙讨鼠第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 一、数据输入一、数据输入/输出的概念输出的概念内内存存RAM从键盘将数据输入从键盘将数据输入从

3、数据文件读入从数据文件读入将数据输出到屏幕将数据输出到屏幕将数据输出到文件将数据输出到文件说明说明:(1)数据输入数据输入/输出是输出是相对计算机内存相对计算机内存(2)数据输入数据输入/输出输出使用标准库函数完成使用标准库函数完成(3)数据输入数据输入/输出标准库函数的输出标准库函数的原型声明在原型声明在stdio.h头文件头文件中中getchar(),getch(),gets()scanf()fgetc(),fgets()fscanf(),fread()putchar(),put()printf()fputc(),fputs()fprintf(),fwrite()磁萨吧井袜陶荧雪株锗慢疼且

4、看洋删卞响鲤泽法甜风能淀砰捶双塔疚悲简第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 putchar函数是字符输出函数,函数是字符输出函数,其功能是在显示器上输出其功能是在显示器上输出单单个字符个字符。其一般形式为:其一般形式为:putchar(字符变量字符变量);例如:例如:putchar(A);输出大写字母输出大写字母Aputchar(x);输出字符变量输出字符变量x的值的值putchar(n);换行换行说明:说明:使用本函数前必须要用文件包含命令

5、:使用本函数前必须要用文件包含命令: #includestdio.h1、字符输出函数、字符输出函数putchar()二、字符(串)键盘输入二、字符(串)键盘输入/屏幕输出屏幕输出徊攒琅沫闸难霖用畸迟辑脂忌卧辑李腔旱蹿窥蔫希泰迈尤佃氓瓢鸽件塞许第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 字符串输出函数字符串输出函数puts使用格式:使用格式:puts(st) 其其中中:st可可以以是是己己定定义义的的字字符符数数组组名名,也也可可以以是是指指向向字字

6、符符变量的指针变量。变量的指针变量。 功功能能:把把字字符符数数组组中中或或指指针针变变量量所所指指向向的的字字符符串串输输出出到到显显示示器器。输输出出从从数数组组的的第第一一个个字字符符或或指指针针所所指指向向的的字字符符到到字字符串(以符串(以0结尾)之间的所有字符。例:结尾)之间的所有字符。例:charc6=China;puts(c);puts不不需需要要格格式式控控制制符符,输输出出完完后后且且自自动动换换行行,等等价价于于:printf(%sn,c);charc=“abc0sjd3”;puts(c);输出结果为输出结果为:abc2.字符串输出函数字符串输出函数puts()二、字符(

7、串)键盘输入二、字符(串)键盘输入/屏幕输出屏幕输出逼陌激双缨屡或溜扮尝津讽贬辞萌靴物须沽僵词鹰谓杨蒲禄布虐糕窜曰人第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 函数函数getchar函数的功能是从键盘上输入一个字符。函数的功能是从键盘上输入一个字符。其一般形式为:其一般形式为:字符变量字符变量=getchar();如:如:#includevoidmain()charc;printf(inputacharactern);c=getchar();put

8、char(c);使用使用getchar函数还应注意几个问题:函数还应注意几个问题:3、字符输入函数、字符输入函数getchar()二、字符(串)键盘输入二、字符(串)键盘输入/屏幕输出屏幕输出肉债洁亨骗吃靳蓝竹婶宗揭酞熬计秸整溃犊贫短仿郑谢咯辫鉴邀厩练竖勘第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 getchar函数只能接受单个字符函数只能接受单个字符,输入数字也按字符处理。,输入数字也按字符处理。输输入入多多余余的的字字符符存存入入到到键键盘盘的

9、的缓缓冲冲区区,若若有有下下一一个个getchar函数语句,直接从键盘的缓冲区读取。函数语句,直接从键盘的缓冲区读取。#includemain()charc1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);当程序运行后:输入当程序运行后:输入ABCDEF,输出为:,输出为:说明说明:二、字符(串)键盘输入二、字符(串)键盘输入/屏幕输出屏幕输出涎桥哪曹蝗鸵慢漆讳盏局耿凳舒钥拼尝扑辽巍扒卖芳哪益助鞍卸鹤龚炭望第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.G

10、oit.Netwww.Goit.Net第2讲 数据输入/输出 2. getch() 2. getch() 它它与与getchar()getchar()函函数数的的区区别别是是输输入入不不需需要要回回车车键键结结束束,即即输输入入一个字符就自动结束输入。它们的调用格式为一个字符就自动结束输入。它们的调用格式为: : getch(); getch(); 二、字符(串)键盘输入二、字符(串)键盘输入/屏幕输出屏幕输出 该函数不将读入的字符回显该函数不将读入的字符回显在显示屏幕上,利用回显和不回在显示屏幕上,利用回显和不回显的特点,它经常用于交互输入显的特点,它经常用于交互输入的过程中完成暂停等。的过

11、程中完成暂停等。 在调试程序时,也经常可在在调试程序时,也经常可在mainmain函数最后增加一个函数最后增加一个getch();getch();以直接观察程序的运行结果而不以直接观察程序的运行结果而不必每次都使用必每次都使用Alt+F5Alt+F5切换窗口切换窗口例如:例如: #include #include void main() void main() float x; float x; printf(Enter The Number x:); printf(Enter The Number x:); scanf(%f,&x); scanf(%f,&x); printf(Ente x=

12、%fn ,x); printf(Ente x=%fn ,x); printf(Press any key printf(Press any key to confinue.); to confinue.); getch(); /*getch(); /*等待输入任一键等待输入任一键*/ */ 击抬怕汽智熔郊隧胡超咆线鳞摄郎彪贴囱渍价柒磊罗痔萌抚怂糟触肾恬朴第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 4.输入字符串函数输入字符串函数gets()函数:函

13、数:字符串输入函数字符串输入函数gets格式:格式:gets(st) 功能:功能:从标准输入设备键盘上输入一个字符串。本函数从标准输入设备键盘上输入一个字符串。本函数得到一个函数值,即为该字符数组的首地址。得到一个函数值,即为该字符数组的首地址。 说明说明: :gets函数并不以空格作为字符串输入结束的标志,函数并不以空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与而只以回车作为输入结束。这是与scanf(“%s”,)函数不同的。函数不同的。二、字符(串)键盘输入二、字符(串)键盘输入/屏幕输出屏幕输出股仁曹青笼郁桩辨呀腰终姿卉怯光凤惺欣似硒噪药窟乏拭馅凛冕廉瞪宝铃第2讲据输入输出

14、的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 例例字符串的输入示例字符串的输入示例#includestdio.hvoidmain()charst120,st220;printf(inputstring:n);gets(st1);scanf(%s,st2);puts(st1);puts(st2);程序运行结果是:程序运行结果是:二、字符(串)键盘输入二、字符(串)键盘输入/屏幕输出屏幕输出笑灿姐彩碰舶唆耻劣玉哉勘窄佑豪玉浆焕寝贴剂灿抢滓惭孜敦懈属谴幸反第2讲据输入输出

15、的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 一般形式为:一般形式为: printf(“格式控制字符串格式控制字符串”,输出表列,输出表列) 例如:例如:printf(%3dn,x)%格式说明起始符3输出数据的宽度d输出数据的类型x输出项格式输出函数格式输出函数printf()()三、格式输入三、格式输入/输出输出乙潦廓厚主氟绰佯占影举拂咐否粪烩诵边穴昼锚砖竹傣纹等林枪揭供郧驶第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技

16、学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 可见,双引号中的字符除了格式说明的字符外,其它非可见,双引号中的字符除了格式说明的字符外,其它非格式说明的普通字符按原样输出。格式说明的普通字符按原样输出。例如例如:a=3;b=4;printf(%d%d,a,b);格式说明格式说明输出表列输出表列输出结果输出结果:34普通字符普通字符printf(a=%d,b=%d,a,b);输出结果输出结果:a=3,b=4printf(a=%db=%d,a,b);输出结果输出结果:a=3b=4格式输出函数格式输出函数printf()风挨垢籍延劝喧圃蝇要拈挨

17、村谈灌恋鹏窄风静葵吁罚削颊杆啮磺忘孕痞援第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 说明:格式字符串的一般形式为:说明:格式字符串的一般形式为:%标志标志输出最小宽度输出最小宽度精度精度长度长度类型字符类型字符其中方括号其中方括号中的项为可选项。中的项为可选项。1.类型字符类型字符用以表示输出数据的类型:用以表示输出数据的类型:C语言中输出不同数据,使用不同的类型字符,语言中输出不同数据,使用不同的类型字符,例如:输出整型数据,使用的类型符例如:输

18、出整型数据,使用的类型符d,i(小写小写)格式输出函数格式输出函数printf()尚嘿及嘴疆撕权樟负搓膨韩蚤季羊效零绿茄秦澜臣涌晒囚肄剪丸拱嗽燕巴第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 表示输出类型的格式字符及表示输出类型的格式字符及意义意义d,i以十进制形式输出带符号整数以十进制形式输出带符号整数(正数不输出符号正数不输出符号)o以八进制形式输出无符号整数以八进制形式输出无符号整数(不输出前缀不输出前缀O)x,X以十六进制形式输出无符号整数以

19、十六进制形式输出无符号整数(不输出前缀不输出前缀OX)u以十进制形式输出无符号整数以十进制形式输出无符号整数f以小数形式输出单、双精度实数以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数以指数形式输出单、双精度实数g,G以以%f%e中较短的输出宽度输出单、双精度实数中较短的输出宽度输出单、双精度实数c输出单个字符输出单个字符s输出字符串输出字符串格式输出函数格式输出函数printf()稼氧任吴搜径宵缸单旺装斡帚谷肖湾毁只骆瑟当蛛难趾斋离榨卯丫睁豪逸第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goi

20、t.Netwww.Goit.Net第2讲 数据输入/输出 2.标志标志-、+、#、空格四种,、空格四种,-结果左对齐,右边填空格结果左对齐,右边填空格+输输出出符符号号(正正号号或或负负号号)空空格格输输出出值值为为正正时时冠冠以以空空格格,为为负时冠以负号负时冠以负号#对对c,s,d,u类类无无影影响响;对对o类类,在在输输出出时时加加前前缀缀o;对对x类类,在在输输出出时时加加前前缀缀0x;对对e,g,f类类当当结结果果有有小小数数时时才才给给出出小小数数点点3.输出最小宽度输出最小宽度用用十十进进制制整整数数来来表表示示输输出出的的最最少少位位数数。若若实实际际位位数数多多于于定定义义的

21、的宽宽度度,则则按按实实际际位位数数输输出出,若若实实际际位位数数少少于于定定义义的的宽宽度度则则补以空格或补以空格或0。格式输出函数格式输出函数printf()屋詹谤磁垒徐更八旺娩腮戏搭涟墟鸯伎绑脐湖埃拷贯镇枷督询帮意潮您沁第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 4.精度精度精度格式符以精度格式符以“.”开头,后跟十进制整数。开头,后跟十进制整数。意义是:意义是:如果输出数字,则表示小数的位数;如果输出数字,则表示小数的位数;如果输出的是字符

22、,则表示输出字符的个数;如果输出的是字符,则表示输出字符的个数;若实际位数大于精度数,则截去超过的部分。若实际位数大于精度数,则截去超过的部分。5.长度长度长长度度格格式式符符为为h,l两两种种,h表表示示按按短短整整型型量量输输出出,l表表示示按按长长整型整型量输出。量输出。格式输出函数格式输出函数printf()稀皿之饮宋特莆吧易揖朴织疾绑拴氓铃亩法园却嚷辽荒宿鉴郴垂擦崎逮嘿第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 注意:注意:1.格式字符串

23、是以格式字符串是以%开头的字符串,可由格式字符串和非格开头的字符串,可由格式字符串和非格式字符串两种组成,其中格式控制字符串用于指定输出格式。式字符串两种组成,其中格式控制字符串用于指定输出格式。2.在在%后面跟有各种格式字符,以说明输出数据的类型、形后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。式、长度、小数位数等。3.非格式字符串在输出时原样照印,在显示中起提示作用。非格式字符串在输出时原样照印,在显示中起提示作用。4.输出表列中给出了各个输出项,输出表列中给出了各个输出项,要求格式字符串和各输出要求格式字符串和各输出项在数量和类型上应该一一对应。项在数量和类型上应该

24、一一对应。格式输出函数格式输出函数printf()总额祖轨殊寺召腆暂伐现织雀娥沫壁闸娟核亏佬号擎剿赦椅械猩獭稿绕挥第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 1.scanf()函数的一般形式函数的一般形式scanf(“格式控制字符串格式控制字符串”,地址列表,地址列表); 其其中中,格格式式控控制制字字符符串串的的作作用用与与printf函函数数相相同同,但但不不能能显显示示非非格格式式字字符符串串,也也就就是是不不能能显显示示提提示示字字符符串。

25、串。 地址列表,地址列表,用来接受数据各用来接受数据各变量的地址。变量的地址。变量的地址表示如下:变量的地址表示如下:&变量名变量名例如例如:&a,&b分别表示变量分别表示变量a和变量和变量b的地址的地址 格式输入函数格式输入函数scanf()狮厉锅人构珊贾企凿疙赫襄辐彻惯肌镐托既光橙拐圃喘量恤肺华会碳衣缸第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 例:例:main()inta,b,c;printf(inputa,b,cn);scanf(%d%d%

26、d,&a,&b,&c);printf(a=%d,b=%d,c=%d,a,b,c);格式输入函数格式输入函数scanf()蛰藏学菩醚惋挤遁轩绪疑绣淋杠锁彦高洒靡荒尉苦问膝浓闽呕绦芽洞痒姓第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 2.格式字符串格式字符串格式字符串的一般形式为:格式字符串的一般形式为:%*输入数据宽度输入数据宽度长度长度类型字符类型字符其中有方括号其中有方括号的项为任选项。各项的意义如下:的项为任选项。各项的意义如下:(1)类型字符类

27、型字符表示输入数据的类型,其格式符和意义如下所示:表示输入数据的类型,其格式符和意义如下所示:d输入十进制整数输入十进制整数o输入八进制整数输入八进制整数x输入十六进制整数输入十六进制整数u输入无符号十进制整数输入无符号十进制整数f或或e输入实型数输入实型数(用小数形式或指数形式用小数形式或指数形式)c输入单个字符输入单个字符s输入字符串输入字符串格式输入函数格式输入函数scanf()塔赊确痘适对杯座驯蹿流辐斋嘲鲸酿蔑卒鞋良粘邯窗骡桨距谐寸锈绦叠灾第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netww

28、w.Goit.Net第2讲 数据输入/输出 2.“*”符符 用以表示该输入项读入后不赋予相应的变量,跳过该输入值。用以表示该输入项读入后不赋予相应的变量,跳过该输入值。如如scanf(%d%*d%d,&a,&b);输入为:输入为:123把把1赋予赋予a,2被跳过,被跳过,3赋予赋予b。3.宽度宽度 用十进制整数指定输入的宽度用十进制整数指定输入的宽度(即字符数即字符数)。例如:例如:scanf(%5d,&a);输入:输入:12345678只把只把12345赋予变量赋予变量a,其余部分被截去。,其余部分被截去。又如:又如:scanf(%4d%4d,&a,&b);输入:输入:12345678将把将

29、把1234赋予赋予a,而把,而把5678赋予赋予b。格式输入函数格式输入函数scanf()跃泊刀蜂晚烁施嘘势写甜奔谭宅厉而会缝锤努踪政尿充峪益枫咬荤闽互碱第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 4.长度长度 长长度度格格式式符符为为l和和h,l表表示示输输入入长长整整型型数数据据(如如%ld)和和双双精精度浮点数度浮点数(如如%lf)。h表示输入短整型数据。表示输入短整型数据。例如:例如:main()inta;longb;doublex;sca

30、nf(“%d%ld%lf”,&a,&b,&x);printf(“a=%d,b=%ld,x=%lf”,a,b,x);格式输入函数格式输入函数scanf()淑铸浴势厌辅裕像抖刮睬巫血拿屋样将介元象核游瞄豆踪违蓄胃酌俄眉纱第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 3.使用使用scanf函数还必须注意以下几点:函数还必须注意以下几点:(1)scanf函数中没有精度控制函数中没有精度控制。如:如:scanf(“%5.2f”,&a);是非法的。是非法的。(2

31、)scanf中要求给出变量地址,中要求给出变量地址,如:如:scanf(“%d”,a);是非法的。是非法的。(3)在在输输入入多多个个数数值值数数据据时时,若若格格式式控控制制串串中中没没有有非非格格式式字符作输入数据之间的间隔则可用空格,字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。或回车作间隔。例如:例如:scanf(“%d%d”,&a,&b);输入:输入:1210或或1210格式输入函数格式输入函数scanf()押挽恕芝撩岗暮肠止楷与笛建涎正奎嗅傻绷汽算仁券弯吉叶砸鸡捣纶故词第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算

32、机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 (4)在在输输入入字字符符数数据据时时,若若格格式式控控制制串串中中无无非非格格式式字字符,则认为所有符,则认为所有输入的字符均为有效字符。输入的字符均为有效字符。例如:例如:scanf(%c%c%c,&a,&b,&c);输入为:输入为:def则把则把d赋予赋予a,赋予赋予b,e赋予赋予c。只有当输入为:只有当输入为:def时,把时,把d赋于赋于a,e赋予赋予b,f赋予赋予c。如果在格式控制中如果在格式控制中加入空格作为间隔,加入空格作为间隔,如如scanf(%c%c%c,&a,&b,&c);输入时各数据之

33、间可加空格。输入时各数据之间可加空格。格式输入函数格式输入函数scanf()锥巷沈辟巳帘垛猿溅葛蛋布矩畴愈头遣履决呈补盼钞邮焦罕购柬缎陇戏替第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 (5)如如果果格格式式控控制制串串中中有有非非格格式式字字符符则则输输入入时时也也要输入该非格式字符。要输入该非格式字符。例如:例如:scanf(%d,%d,%d,&a,&b,&c);其其中中用用非非格格式式符符“,”作作间间隔隔符符,故故输输入入时时应应为:为:5,

34、6,7又如:又如:scanf(a=%d,b=%d,c=%d,&a,&b,&c);则输入应为:则输入应为:a=5,b=6,c=7格式输入函数格式输入函数scanf()瞬驱挂焉珠悟勺返溯论苏翱肄格力曙烹硝契胳溜杆氖纷几江惟铂豆醋箭遵第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 (6)如如输输入入的的数数据据与与输输出出的的类类型型不不一一致致时时,虽虽然编译能够通过,但结果可能不正确。然编译能够通过,但结果可能不正确。voidmain()inta;pri

35、ntf(inputanumbern);scanf(%d,&a);printf(%ld,a);由由于于输输入入数数据据类类型型为为整整型型,而而输输出出语语句句的的格格式式串中说明为长整型,因此输出结果和输入数据不符。串中说明为长整型,因此输出结果和输入数据不符。格式输入函数格式输入函数scanf()带金辖孰赁否街猩蜜懦萄菜袜图羡檬丫街蠢稀窃双映馅玲淬领焚因传泼绊第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 格式输入格式输入/输出输出-例题例题 例例1

36、:为为float类类型型变变量量a、b输输入入数数据据1.2和和2.3,下下列列哪哪一组是正确的(一组是正确的( )。)。 A、scanf(%f%f,&a,&b); 输入输入1.2,2.3 B、scanf(%2.1f%2.1f,a,b); 输入输入1.2,2.3 C、scanf(%f,%f,&a,&b); 输入输入1.2,2.3 D、scanf(%f%f“,&a,&b); 输入输入1.22.3例例2:编一程序输入一个正整数,输出它的编一程序输入一个正整数,输出它的16进制数进制数main()intn;scanf(“%d”,&n);printf(“%x”,n);疤肩眷扬筛退鲜吞锐掳藻汰啮夕撼猪豌

37、耘虞应苹壳菱曙汁拭皑患尾顾伴鞘第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 所谓所谓文件文件存储在存储在外部介质外部介质上的数据的集合,例如:存上的数据的集合,例如:存储在储在磁盘磁盘上。上。C语言把文件看作是一个字符语言把文件看作是一个字符(字节字节)的序列,即由一个一个的序列,即由一个一个字符字符(字节字节)的数据顺序组成。的数据顺序组成。C语言中的文件存储方式分为语言中的文件存储方式分为:ASCII文件文件和和二进制文件二进制文件ASCII文件

38、文件(文本文件文本文件):每个字节存放一个每个字节存放一个ASCII代码,代代码,代表一个字符表一个字符二进制文件二进制文件:把内存中的把内存中的数据数据按其按其在内存中的存储形式在内存中的存储形式原原样输出到样输出到磁盘上存放。磁盘上存放。四、通过文件输入四、通过文件输入/ /输出输出哗吨瞄耶菲谰数晾钠攀烬帖冉慎滚椭迢病殴皖交挺坞付茂他弹敖坎植碟曰第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 ASCII文件便于字符处理和输出,二进制文件节省存储空间

39、。文件便于字符处理和输出,二进制文件节省存储空间。其中:其中: 0-ASCII码为码为48(对应编码为(对应编码为110000)1-ASCII码为码为49(对应编码为(对应编码为110001)例例.整数整数10000的存储:的存储:001001110001000000110001001100000011000000110000001100000010011100010000二进制二进制存储形式(存储形式(2个字节)个字节)内存存储形式内存存储形式10000ASCII存储形式(存储形式(5个字节)个字节)说明:说明:1.一个文件是一个一个文件是一个字符流字符流或或二进制流。二进制流。2.C语言中

40、对文件的存取是语言中对文件的存取是以字符以字符(字节字节)为单位的,为单位的,输入输出输入输出数据数据流流仅受程序控制,不受物理符号控制(如:回车,换行符),仅受程序控制,不受物理符号控制(如:回车,换行符),称这样称这样的文件为的文件为流文件。流文件。10000的二进制形式的二进制形式四、通过文件输入四、通过文件输入/ /输出输出绅辱匀细输处罐胳称哩戈涝予闪恢四咎丽肥姬臼忌柄插庄崇捻瞅困野鲜蜘第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 C语言处理

41、文件通常使用语言处理文件通常使用缓冲文件系统缓冲文件系统缓冲文件系统缓冲文件系统系统自动地在内存中为每个正在使用的文件系统自动地在内存中为每个正在使用的文件名开辟一个名开辟一个缓冲区。缓冲区。用于处理用于处理文本文件文本文件(字符流)。(字符流)。程序数据区程序数据区(输入、输出输入、输出)文件缓冲区文件缓冲区磁盘文件磁盘文件标准的标准的C语言只采用缓冲文件系统语言只采用缓冲文件系统:既可以处理既可以处理文本文件文本文件,也也可以处理可以处理二进制文件。二进制文件。C语言中对文件的读写都是用库函数来实现。语言中对文件的读写都是用库函数来实现。四、通过文件输入四、通过文件输入/ /输出输出辨碎辜

42、赊衬惕摸涅缩粳鸣艺吭锚钳瑚玫拷杭冕派虱尘可器卖诧泉噎酷幸缠第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如:(如:文件的名字文件的名字、文件状态与文件当前位置等、文件状态与文件当前位置等)。这些信息保存在一个)。这些信息保存在一个结构体类型的变量中。结构体类型的变量中。结构体类型是由系统定义的,名为结构体类型是由系统定义的,名为F

43、ILE。TurboC在在stdio.h文件中有以下的文件类型声明:文件中有以下的文件类型声明:typedefstructcharlevel; /*缓冲区缓冲区满满或或空空的程度的程度*/unsignedflags;/*文件状态标志文件状态标志*/charfd; /*文件描述符(文件号)文件描述符(文件号)*/unsignedcharhold;/*如无缓冲区不读取字符如无缓冲区不读取字符*/charbsize;/*缓冲区大小缓冲区大小*/unsignedchar*buffer;/*数据缓冲区的位置数据缓冲区的位置*/unsignedchar*curp;/*指针,下一个字符的位置指针,下一个字符的

44、位置*/unsignedistemp;/*临时文件,指示器临时文件,指示器*/chartoken;/*用于有效性检查用于有效性检查*/FILE;v文件类型指针踌还瘸似泪钎哄搂鼎胚伺演燃镰造英惧奔爆忻恭门乖协士逆啄逛周式卧觅第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 有了有了FILE类型之后,就可以用它来类型之后,就可以用它来定义定义FILE类型的变类型的变量。量。例如例如:FILE*fp;表示定义了一个表示定义了一个指向指向FILE类型结构体类型结

45、构体的的指针变量指针变量fp,可,可以使以使fp指向某个文件的结构体变量,从而指向某个文件的结构体变量,从而通过该结构体变量中通过该结构体变量中的文件信息来访问该文件。的文件信息来访问该文件。也就是说,也就是说,通过文件指针变量能够通过文件指针变量能够找到与它相关的文件找到与它相关的文件。如果有如果有n个文件,一般应该设个文件,一般应该设n个指向个指向FILE类型结构体类型结构体的指针变量,使它们分别指向的指针变量,使它们分别指向n个文件,以实现对文件的访问个文件,以实现对文件的访问v文件类型指针凶嗽吮饱拱邻运捆录仑画苞每角卵肉求沁一料惶捻周行关淹蝉歼奇材眼卿第2讲据输入输出的概念第2讲据输入

46、输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 例如例如: fp=fopen(a1,r);说明:说明:a1为文件名为文件名,是字符串。称为是字符串。称为外部文件名。外部文件名。使用方式为:使用方式为:只读只读方式。方式。fopen函数带回指向文件函数带回指向文件a1的指针,并赋给的指针,并赋给fp,使,使得得fp指向指向a1。fp称为称为内部文件名内部文件名。v文件的打开与关闭文件的打开与关闭1.文件的打开文件的打开(fopen函数函数)C语言中用语言中用fopen()函数来实现打开文

47、件函数来实现打开文件,fopen函数的调函数的调用方式为用方式为:FILE*fp;fp=fopen(文件名,使用文件方式文件名,使用文件方式);奇阿益赋尹活纱嘴念扼谁柔器船抚蔬雨憾入上寇醛认绷未尧裸鄙戳满扫蛛第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 通过通过fopen()使使内部文件名内部文件名和和外部文件名外部文件名联系上,即联系上,即fp指向指向a1文件。文件。在打开一个文件时,通知给编译系统有以下在打开一个文件时,通知给编译系统有以下3个信

48、息:个信息:需要打开(即访问)的文件名。需要打开(即访问)的文件名。使用文件的方式。使用文件的方式。让哪一个指针变量指向被打开的文件。让哪一个指针变量指向被打开的文件。如果如果fopen函数打开文件失败,则返回一个空指针值函数打开文件失败,则返回一个空指针值NULL。v文件的打开与关闭文件的打开与关闭默艇宵人缮咸协挡恋侠兴换妓捷蜜芜辙膨工峭扬绳流树凯喻雌喀烟慰牲帧第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 为为避避免免因因上上述述原原因因的的出出错

49、错,造造成成对对文文件件读读写写操操作作出出错错,常常用用以以下下的的方方法法来来打打开开一一个个文文件件,以以确确保保对对文文件件读读写写操操作作的的正确性:正确性:if(fp=fopen(c:myfile.dat,w+)=NULL)printf(Cannotopenfilethefileexit!);exit(0);/*退出程序退出程序*/*此处编写打开文件后,对文件读此处编写打开文件后,对文件读写的代码写的代码*/v文件的打开与关闭文件的打开与关闭注意:注意:指定文件路径要使用指定文件路径要使用“盘符盘符:文件夹名文件夹名文件名文件名”形形式式贝凶如标轩胖民荣道洛矫髓迹抒残店恶拿那湛么说

50、备晤箕参蔡疫磨鹤晨途第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 文件使用方式文件使用方式含含义义r(只读)(只读)为输入打开一个为输入打开一个已存在已存在的文本文件。的文本文件。w(只写)(只写)为输出创建新文件,为输出创建新文件,(若文件已存在,则文件内容被清空若文件已存在,则文件内容被清空)a(追加数据追加数据)只用于向只用于向已存在已存在的文件的末尾的文件的末尾添加添加数据。数据。rb(只读)(只读)为输入打开一个为输入打开一个已存在已存在的

51、二进制文件。的二进制文件。wb(只写)(只写)为输出打开一个二进制文件。若文件不存在,则创建新文件为输出打开一个二进制文件。若文件不存在,则创建新文件ab(追加)(追加)打开一个打开一个已存在已存在的二进制文件,在文件尾追加数据。的二进制文件,在文件尾追加数据。r+(读(读/写)写)为读写打开一个为读写打开一个已存在已存在的文本文件。的文本文件。w+(读(读/写)写)建立一个新文本文件。若文件已存在,则文件内容被清空建立一个新文本文件。若文件已存在,则文件内容被清空a+(读(读/写)写)保留已存在的文件保留已存在的文件,可以添加数据,也可以读取数据,可以添加数据,也可以读取数据rb+(读读/写

52、)写)为读写打开一个已存在的二进制文件。为读写打开一个已存在的二进制文件。wb+(读读/写)写)建立一个建立一个新新的二进制文件的二进制文件,若文件已存在若文件已存在,则文件内容被清空则文件内容被清空ab+(读(读/写)写)保留已存在的文件,保留已存在的文件,可以添加数据,也可以读取数据可以添加数据,也可以读取数据v文件的打开与关闭文件的打开与关闭杰震昼广粪氓囊厂予劲奋副雾春结医暑吸撇傀庄验庚载耗豺帖轻黎钞甥鞠第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/

53、输出 2.文件的关闭(文件的关闭(fclose函数函数)关闭文件关闭文件就是使文件指针不再指向该文件,即使文就是使文件指针不再指向该文件,即使文件指针变量与文件件指针变量与文件“脱钩脱钩”。C语言中用语言中用fclose()函数来关闭文件,函数来关闭文件,fclose函数的调用函数的调用形式是形式是:fclose(文件指针文件指针);例如例如:fclose(fp);关闭关闭fp所指向的文件所指向的文件如果如果fclose函数关闭文件成功,则返回函数关闭文件成功,则返回零值零值;如果;如果fclose函数关闭文件失败,则返回函数关闭文件失败,则返回非零值非零值EOF(-1),EOF为为文件结文件

54、结束符。束符。v文件的打开与关闭文件的打开与关闭谐酷为拟灸保惺珠右胞绳氢龚齐掣劲锌帧嵌寻夷睦灾育峡公制翌柔锣佩谦第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 在语言中提供了多种文件读写的函数:在语言中提供了多种文件读写的函数:字符读写函数:字符读写函数: fgetc和和fputc字符串读写函数:字符串读写函数:fgets和和fputs格式化读写函数:格式化读写函数:fscanf和和fprinf 数据块读写函数:数据块读写函数:freed和和fwrit

55、ev文件的读写文件的读写埃刮名哆孙锤酶限缸族案睬颅况委痊掀减狡蔑蹲垃慧铰造曼惋宠组甭坪佑第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 1.fputc函数函数把把一个字符一个字符写到写到磁盘文件上去,磁盘文件上去,调用方式为调用方式为:fputc(ch,fp);功能:其作用是功能:其作用是将字符(将字符(ch的值)输出到的值)输出到fp所指向的文件中去。所指向的文件中去。如果输出成功,则返回如果输出成功,则返回ch字符;否则,返回字符;否则,返回EOF

56、(即(即-1)。)。v文件的写操作文件的写操作例:输入例:输入5行字符,将其写入到行字符,将其写入到C盘根目录的盘根目录的myfile.txt文件中文件中 函函数数fprintf()、fputs()、fputc()和和fwrite()均均为为文文件件的的写写操操作作函函数,它们在数,它们在stdio.h头文件中的原型定义形式如下:头文件中的原型定义形式如下:intfputc(intch,FILE*fp);intfputs(char*string,FILE*fp);intfprintf(FILE*fp,char*format,);intfwrite(void*buf,intsize,intcou

57、nt,FILE*fp);需儡椒虫慨巩侍胎猴力凛题纂烟德汞履阑循氓钥橱镐抓降几舆影变尚口牵第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 #includevoidmain()FILE*fp;charch80,*p=ch;intn;fp=fopen(c:myfile.txt,w);/*打开文件打开文件*/printf(inputastring:n);for(n=1;n=5;n+)gets(p);/*输入一行字符输入一行字符*/while(*p!=0)/*逐

58、个字符写入文件逐个字符写入文件*/fputc(*p,fp);p+;fputc(n,fp);/*写入换行符写入换行符*/fclose(fp);v文件的写操作文件的写操作冤驶彩府九但澎煤央调昌红姆宫命始艇艾层罪鞍友蔫确孤守绵主羊享辅誓第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 2字符串写函数字符串写函数fputs()fputs函数是向指定的文件输出一个字符,其使用格式:函数是向指定的文件输出一个字符,其使用格式:fputs(str,fp); 其其中中,

59、fp为为定定义义的的文文件件指指针针变变量量;str可可以以是是指指向向字字符符串串的的指指针针变量、字符数组名或字符串常量。例如:变量、字符数组名或字符串常量。例如:fputs(China,fp);操作成功,函数返回操作成功,函数返回0;写操作失败,返回非;写操作失败,返回非0。例:输入例:输入5行字符,将其写入到行字符,将其写入到C盘根目录的盘根目录的myfile.txt文件中文件中v文件的写操作文件的写操作庚茅阵检朝壬养达悉作溯岿徽砸井呼唆越蹈沥眠幼高榨坛蒲忽抑怯厦蛛六第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:

60、www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 #includevoidmain()FILE*fp;charch80,*p=ch;intn;fp=fopen(c:myfile.txt,w);/*打开文件打开文件*/printf(inputastring:n);for(n=1;n=5;n+)gets(p);/*输入一行字符输入一行字符*/fputs(p,fp);/*写入该行字符写入该行字符*/fputc(n,fp);/*写入换行符写入换行符*/fclose(fp);例:输入例:输入5行字符,将其写入到行字符,将其写入到C盘根目录的盘根目录的myfile.txt文件中文件中

61、v文件的写操作文件的写操作渠控众就扭阻贺虎淮若资威莲丧舞汐及设潭贷虽石殴郎泵荔谰诗号雕准屉第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 3格式化写函数格式化写函数fprintf() 把把格格式式化化的的数数据据写写到到文文件件中中,其其中中格格式式化化的的规规定定与与printf()函函数数相相同同,所所不不同同的的只只是是fprintf()函函数数是是向向文文件件中中写写入入,而而printf()是是向向屏屏幕幕输出。如:输出。如:fprintf(

62、fp,s=%f,i=%dn,s,i); 其返回值为实际写入文件中的字符个数(字节数);如果写错误,其返回值为实际写入文件中的字符个数(字节数);如果写错误,则返回一个负数。则返回一个负数。例题:例题:计算数列计算数列1,-1/3!,1/5!,-1/7!,1/9!,.的和至某项的绝对的和至某项的绝对值小于值小于1e-5时为止时为止(该项不累加该项不累加),将求和的结果以格式,将求和的结果以格式%.6写到考生目录下新建文件写到考生目录下新建文件design.dat。v文件的写操作文件的写操作后锚沼讥齿父凶虏檀芭仅挞挠镁彻茁膀赞霞孟裁祥雌坚扎堕豢晾短乔病诊第2讲据输入输出的概念第2讲据输入输出的概念

63、浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 #include#includevoidmain()FILE*p;floats=1,t=1,i=3;/例题:例题:计算数列计算数列1-1/3!+1/5!-1/7!+1/9!,.的和至某项的绝对的和至某项的绝对值小于值小于1e-5时为止时为止(该项不累加该项不累加),将求和的结果以格式,将求和的结果以格式%.6写到考生目录下新建文件写到考生目录下新建文件design.dat。v文件的写操作文件的写操作p=fopen(design.dat,w);whi

64、le(fabs(t)1e-5)t=-1/(i-1)*i)*t;s=s+t;i+=2;fprintf(p,%.6f,s);fclose(p);曙葫隧狼桃烬带袁鬼慨吹赤琳每台隶历垂得转沛查资阜仆斗褥褪巫默建塑第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 v文件的读操作文件的读操作标标准准C提提供供的的文文件件读读操操作作函函数数有有fgetc()、fgets()、fscanf() 和和fread(),它们在,它们在stdio.h头文件中的原型定义形式如下

65、:头文件中的原型定义形式如下:intfgetc(FILE*fp);char*fgets(char*string,intn,FILE*fp);intfscanf(FILE*fp,char*format,);intfread(void*buf,intsize,intcount,FILE*fp);说明:说明: (1)对于读操作,在文件内部有一个位置指针,用来指向)对于读操作,在文件内部有一个位置指针,用来指向文件的当前读的字节。在文件打开时,该指针总是指向文件的文件的当前读的字节。在文件打开时,该指针总是指向文件的第一个字节。当读取一个数据(字符、一字符串,一个整数或第一个字节。当读取一个数据(字符

66、、一字符串,一个整数或一块数据),该位置指针将自动向后移动到下一个数据位置。一块数据),该位置指针将自动向后移动到下一个数据位置。宛课厦腑懈贼崇绘叁迎鸡啸唱徊毡索男线慨硫狄隙唯楔扦反费侧崩酷常港第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 v文件的读操作文件的读操作 (2 2)对于)对于文本文件,由于它的结束标记是文本文件,由于它的结束标记是EOFEOF(即(即-1-1)因此通常因此通常判断文本文件是否写完通过读取的字符是不是结束标志来判断。判断文本

67、文件是否写完通过读取的字符是不是结束标志来判断。 (3 3)对于)对于二进制文件,由于没有二进制文件,由于没有EOFEOF的结束标志的结束标志,只能使用系统,只能使用系统提供的提供的feof()feof()函数来判断,函数来判断,feof()feof()的使用格式是:的使用格式是:feof(fp)feof(fp); 其中,其中,fpfp是文件指针变量,如果文件读取结束则返回非是文件指针变量,如果文件读取结束则返回非0 0值,没值,没结束返回结束返回0 0。所以读写控制通过下面的形式来控制。所以读写控制通过下面的形式来控制while( !feof(fp)while( !feof(fp) /* /

68、* 此处写入读操作语句此处写入读操作语句 */ */ (4 4)文本文件也可使用文本文件也可使用feof()feof()函数函数按上面来的形式来判断是否按上面来的形式来判断是否读取结束。读取结束。 默煎三布羊挖为礼茎司瘁蹲天饮捶惟恍穴仓氧梦核酞存末溪题杨皱绊氮坟第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 1.fgetc函数函数从指定的文件读入一个字符,该文件必须是以从指定的文件读入一个字符,该文件必须是以“读读”或或“读写读写”方式打开。方式打开。

69、调用方式为调用方式为:ch=fgetc(fp);fgetc函数从函数从fp所指定文件的当前位置读入一个字符赋给所指定文件的当前位置读入一个字符赋给ch;同时,;同时,文件文件的当前位置加的当前位置加1,如果读入时遇到,如果读入时遇到文件结束符,文件结束符,则返回则返回EOF(即(即-1)。)。EOF是在是在stdio.h中中定义的定义的符号符号常量常量,值为,值为-1。由于字符的。由于字符的ASCII码不可能出现码不可能出现-1,应此,应此定义定义EOF为为-1是合适的。是合适的。EOF不是可输出字符,因此不不是可输出字符,因此不能在屏幕上显示。用于表示文能在屏幕上显示。用于表示文件结束,件结

70、束,只适用于文本文件。只适用于文本文件。.ch=fgetc(fp);while(ch!=EOF)putchar(ch);ch=fgetc(fp);.例如例如,从一个磁盘从一个磁盘文本文件文本文件顺序读入字符并在屏幕显示出来,程序段如下顺序读入字符并在屏幕显示出来,程序段如下v文件的读操作文件的读操作臣瓢演烛谢锹督他椒畏猿鳞惯闹殷贤鄙蒜豫丽媒晾该凰佑烯继挑样瞻灯傍第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 while(!feof(fp)c=fgetc

71、(fp);putchar(c);.对于对于二进制文件二进制文件,某个字节中的数有可能是,某个字节中的数有可能是-1,因此,因此难于用难于用EOF判断文件是否结束,这时可以用函数判断文件是否结束,这时可以用函数feof(fp)来测试来测试fp所指的文件当前是否所指的文件当前是否“文件结束文件结束”,是则返回是则返回1,不是则返回不是则返回0。例如例如feof()也适用于文本文件也适用于文本文件v文件的读操作文件的读操作渝旺膘嗽塞芒雾蛙审斜晴乳笨腾搂斥国讼札磅蘑跃溜虚邪通趾经袋遭厂吃第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网

72、站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 2.fgets()函数函数从指定的文件读入从指定的文件读入一个字符串。一个字符串。调用方式为调用方式为:fgets(str,n,fp);从从fp指定的文件中读入一个最大长度为指定的文件中读入一个最大长度为n-1的字符串存入字的字符串存入字符数组符数组str,并在数组,并在数组str中加中加0作为字符串结束符。如果作为字符串结束符。如果在读完在读完n-1个字符之前遇到换行符或个字符之前遇到换行符或EOF,读入即结束。,读入即结束。如果输出成功如果输出成功,则返回则返回str,否则否则,返回返回NULL。v文件的读操作文件

73、的读操作诗漠腔制删狞薪雅星好婉朴何遍汉疡虞嚼姥吉肺混匀阂赡姆特红讫蝇共德第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 #includemain()FILE*in,*out;charch,infile10,outfile10;printf(Entertheinfilename:n);scanf(%s,infile);printf(Entertheoutfilename:n);scanf(%s,outfile);if(in=fopen(infile,rb

74、)=NULL)printf(canntopeninfilen);exit(0);if(out=fopen(outfile,wb)=NULL)printf(canntopenoutfilen);exit(0);while(!feof(in)ch=fgetc(in);fputc(ch,out);fclose(in);fclose(out);运行情况如下运行情况如下:Entertheinfilename:file1Entertheoutfilename:file2准备工作准备工作打开文件打开文件复制复制例:例:将一个二进制磁盘文件的信息复制到另一个磁盘文件中。将一个二进制磁盘文件的信息复制到另一个磁

75、盘文件中。与享炊剔银收呀匠涅谢浸望钦窥部惺悦淋病首漏工褥豁蠕樊红阁岔拐宴且第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 3、fscanf函数函数它们是用于它们是用于磁盘文件的磁盘文件的格式化读格式化读的函数,的函数,作用作用scanf类似。类似。调用方式调用方式:fscanf(文件指针文件指针,格式字符串格式字符串,输入表列输入表列);例如例如:fscanf(fp,%d,%f,&k,&x);地址表列地址表列v文件的读操作文件的读操作fscanf()常

76、常用于读取常常用于读取fprintf()写入的文件,写入的文件,要注意要注意,格,格式控件字符串与数据文件数据存放格式一致。式控件字符串与数据文件数据存放格式一致。吹赏忆敌欢逊吴娟褐铰颠冬对欠烯豌拟耘俄睁凄窑作疵滤换蓝刻惭伎吊统第2讲据输入输出的概念第2讲据输入输出的概念浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net第2讲 数据输入/输出 #includevoidmain()FILE*fp;intx3,i;charch;fp=fopen(c:abc.txt,wb);for(i=1;i=2;i+)scanf(%d,%d,%d,&x1,&x2,&x3);fprintf(fp,%5d%5d%5d,x1,x2,x3);fclose(fp);fp=fopen(c:abc.txt,rb);while(!feof(fp)/*原文件没有结束时原文件没有结束时*/fscanf(fp,%5d%5d%5d,&x1,&x2,&x3);printf(%d,%d,%dn,x1,x2,x3);fclose(fp);getch();v文件的读操作文件的读操作例例:侈脊焕徐戈掩楞亿双立吝举省纯疲文贿涧像虏箕峪业扛遗矗拾渡讳呛雇共第2讲据输入输出的概念第2讲据输入输出的概念

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号