c语言第十三章解析课件

PPT
  • 阅读 58 次
  • 下载 0 次
  • 页数 41 页
  • 大小 2.132 MB
  • 2022-11-13 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
c语言第十三章解析课件
可在后台配置第一页与第二页中间广告代码
c语言第十三章解析课件
可在后台配置第二页与第三页中间广告代码
c语言第十三章解析课件
可在后台配置第三页与第四页中间广告代码
c语言第十三章解析课件
c语言第十三章解析课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 41
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】c语言第十三章解析课件.ppt,共(41)页,2.132 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-7144.html

以下为本文档部分文字说明:

第13章文件操作哈尔滨工业大学计算机科学与技术学院苏小红sxh@hit.edu.cn2022/11/132/41本章学习内容二进制文件和文本文件文件的打开和关闭文件的顺序读写与随机读写标准输入输出及其重定向2022/11/133/41VonJ.NeumannArchitectur

e输入/输出设备存储器运算器控制器程序和输入数据输出结果取出数据存入数据操作命令存取命令取出程序指令输入/输出命令计算结果CPU大脑记忆装置(Memory)眼睛和耳朵(I/Odevices)Wheretoputdataincomputer?Ho

wtoinputoroutputdata?2022/11/134/41I/O设备输入设备–键盘、鼠标–软盘、硬盘、光驱(以文件的形式)–扫描仪、视频采集卡、电视卡、游戏杆、话筒–……输出设备–显示器、打印机–软盘、硬盘、CD/DVD-RW(以文件的形式)–音箱–……单纯的输入

设备或者单纯的输出设备越来越少2022/11/135/41标准输入/输出字符界面的操作系统一般都提供标准输入与输出设备–DOS、Linux、UNIX…一般情况,标准输入就是键盘,标准输出就是终端显示器–操作系统有能力重定向标准输入与输出,比如让文件作为标准输入(标准输出)–这种重定向程

序本身是感觉不到的自来水厂2022/11/136/41DOS下的标准输入/输出重定向程序prog如下–main(){charc;while((c=getchar())!='\n')putchar(++

c);}输入重定向–prog<infile.txt输出重定向–prog>outfile.txt2022/11/137/41流(Stream)计算机中的流的概念–一般称为数据流,也叫做字节流、比特流Filestream(文件流),Video

stream(视频流)andAudiostream(音频流)inspecificfield.–可以倒流的数据流如果你想重新读已经读过的数据,或者要修改已经写入的数据,可以发出流控(FlowControl)命令–不会倒流的数据流也很多网络上的数据流。网

络和数据线等介质只有很小的数据缓冲区,没有大量存储的能力流的载体?–磁盘文件、终端显示器或打印机、存储器等2022/11/138/41外存内存容易健忘,所以数据必须保存在“不健忘”的外存上–磁盘(MagneticDisks)–光盘(CD、DVD)

–U盘(FlashMemory)......容量大、断电后数据不丢失,可重复使用,永久保存–一般都以文件的形式给用户及应用程序使用2022/11/139/41文件(File)文件–一般指存储在外部介质上有名字的一组相关数据的集合–用文件可长期保存数据,实现数据共享–在C语言中,文

件可泛指磁盘文件、终端显示器或打印机……程序中的文件–在程序运行时由程序在磁盘上建立一个文件,通过写操作将数据存入该文件–由程序打开磁盘上的某个已有文件,并通过读操作将文件中的数据读入内存供程序使用2

022/11/1310/41文件(Files)与流(Streams)程序通过文件打开操作把流与设备联系起来,文件打开后,可在程序和文件之间交换数据程序通过文件关闭操作断开流与文件的联系所有流的性质都一样–因为流与设备无关,所以能写入磁盘文件的同一函数也能写入另一设备,如控制台终

端等文件的能力则不同–如磁盘文件支持随机存取,而键盘则不能2022/11/1311/41文件的存放(Storage)可以建立若干文件目录(directory\folder文件夹)在目录里保存文件同一级目录里

保存的文件不能同名对使用者而言,只要知道文件的路径(path,全目录)和文件名,就能使用该文件C:\home\Sunner\main.c这都是托OS的福2022/11/1312/4113.1二进制文件和文本文件文件的类型(T

ypeofFiles)?二进制文件–是一种字节序列,没有字符变换–按照数据在内存中的存储形式(二进制)存储到文件如整数123,在内存占2个字节,在文件中也占2个字节文本文件/ASCII码文件–是一种字符序列,文件中存储每个字

符的ASCII码如整数123在文件中占3个字节,分别存放这3个字符的ASCII码如果存1234呢?2022/11/1313/41文件的格式(FormatofFiles)数据必须按照存入的类型读出,才能恢复其本来面貌

公开的标准格式–如bmp、tif、gif、jpg和mp3等类型的文件,有大量软件能生成和使用这些类型的文件不公开或加密的文件格式–如MicrosoftWord的doc格式就不公开,所以至今没有Word以外的其他软件能完美地读出doc文件2022/11/1314/41缓冲型和非

缓冲型文件系统缓冲型文件系统–指系统自动在内存中为每一个正在使用的文件开辟一个缓冲区,在读写文件时,数据先送到缓冲区,再传给C程序或外存上–缓冲型文件系统利用文件指针标识文件–缓冲型文件系统中的文件操作,也称高级文件操作–高级文件操作函数是ANSIC定义的文件操作函数,具有跨平台和可移植的能

力非缓冲型文件系统–不会自动设置文件缓冲区,缓冲区需由程序员自己设定–非缓冲型文件系统没有文件指针,它使用称为文件号的整数来标识文件2022/11/1315/4113.2文件的打开和关闭下面介绍的函数均定义在<stdio.h>中FILE*fopen(constch

ar*filename,constchar*mode);–FILE*fp=fopen("C:\\CONFIG.SYS","rw");filename是文件名–包含路径。如果不含路径,表示打开当前目录下的文件mode是打开方式–常用为"r"、"w"、"rw"和"a",分别表示只读、

只写、读写和添加–"rb"表示只读二进制文件返回值为指向此文件的指针,留待以后使用–如果打开失败,返回值为NULL2022/11/1316/41文件打开方式(mode):对应二进制文件对应文本文件“r”只读必须是已存在的文件“w”只写不论该文件是否存在,都新建一个文件“a”追加向文本文件尾增加数

据,该文件必须存在“r+”读写打开一个已存在的文件,用于读写“w+”读写建立一个新文件,可读可写“a+”读写向文件尾追加数据,也可读“rb”“wb”“ab”“rb+”“wb+”“ab+”2022/11/1317/41文件指针(FilePointer)FILE*fp;–是FILE型指

针变量,标识一个特定的磁盘文件–与文件相关联的每个流都有一个FILE类型的控制结构,定义有关文件操作的信息,用户绝对不应修改typedefstruct{shortlevel;/*缓冲区′满′或′空′的程度*/unsignedflags;/*文件状态标志*

/charfd;/*文件描述符*/unsignedcharhold;/*如无缓冲区不读字符*/shortbsize;/*缓冲区的大小*/unsignedchar*buffer;/*数据缓冲区的位置*/unsignedcha

r*curp;/*指针当前的指向*/unsignedistemp;/*临时文件指示器*/shorttoken;/*用于有效性检查*/}FILE;/*在stdio.h文件中定义*/2022/11/1318/4113.2

文件的打开和关闭intfclose(FILE*fp);–把遗留在缓冲区中的数据写入文件,实施操作系统级的关闭操作–同时,释放与流联系的文件控制块,以后可以重复使用这部分空间–多数情况下,系统限制同时处于打开状态的文件

总数,因此,打开文件前先关闭无用文件是必要的fclose函数的返回值–当顺利地执行了关闭操作,返回值为0–如果返回值为非零值,表示关闭时有错误–一般只有驱动器中无盘或盘空间不够时才失败,关闭失败会引

起数据丢失、文件的破坏和程序中的随机错误2022/11/1319/4113.3按字符读写文件字符读写intfgetc(FILE*fp);–从fp读出一个字符,将位置指针指向下一个字符–若读成功,则返回该字

符,若读到文件尾,则返回EOF(EOF是一个符号常量,在stdio.h中定义为-1)intfputc(intc,FILE*fp);–向fp输出字符c–若写入错误,则返回EOF,否则返回c2022/11/1

320/4113.3按字符读写文件【例13.1】从键盘输入一串字符,转存到磁盘文件上为什么要判断文件打开是否成功呢?2022/11/1321/41【例13.2】将0~127之间的ASCII字符写到文件中,然后从文件中读出并显

示到屏幕上函数feof()检查是否到达文件尾,当文件位置指针指向文件尾时,返回非0值,否则返回0值2022/11/1322/41【例13.3】修改例13.2,从文件中读出字符时,判断是否为可打印字符,若是则显示该字符,否则显示其十进制ASCII码值2022/11/1323/41

【例13.3】修改例13.2,从文件中读出字符时,判断是否为可打印字符,若是则显示该字符,否则显示其十进制ASCII码值为什么在输出第128个字符的ASCII码值后又输出了一个-1呢?2022/11/1324/41【例13.3】修改例13.

2,从文件中读出字符时,判断是否为可打印字符,若是则显示该字符,否则显示其十进制ASCII码值为什么在输出第128个字符的ASCII码值后又输出了一个-1呢?使用函数feof()时,仅当读到文件结束符时才能判断出到达文件尾,而文件结束符是一个值为-1的不可打印的控制字符if(!is

cntrl(ch))2022/11/1325/4113.3按字符读写文件字符串读写char*fgets(char*s,intn,FILE*fp);–从fp所指的文件中读取字符串并在字符串末尾添加'\0',然

后存入s,最多读n-1个字符–当读到回车换行符、文件末尾或读满n-1个字符时,函数返回该字符串的首地址–特例:fgets(buf,sizeof(buf),stdin);intfputs(constchar*s,FILE*fp);–将字符串写入文件中–

若出现写入错误,则返回EOF,否则返回一个非负数2022/11/1326/4113.3按字符读写文件【例13.4】用fgets()改写例13.1程序,从键盘输入一串字符,添加到文本文件demo.txt的末尾。假设文本文件

demo.txt中已有内容为:Iamastudent.2022/11/1327/4113.4按格式读写文件格式化读写intfscanf(FILE*fp,constchar*format,...);–fsc

anf(fp,"%d,%6.2f",&i,&t);–第1个参数为文件指针,第2个参数为格式控制参数,第3个参数为地址参数表列intfprintf(FILE*fp,constchar*format,...);–fprintf(fp,"%d,%6.2f",i,t);–第1个参数

为文件指针,第2个参数为格式控制参数,第3个参数为输出参数表列2022/11/1328/41将平均分作为STUDENT结构体的成员,使函数的接口更简洁【例13.5】修改例12.7程序,计算每个学生的4门课程的平均分,将学生的

各科成绩及平均分输出到文件score.txt中2022/11/1329/41【例13.5】修改例12.7程序,计算每个学生的4门课程的平均分,将学生的各科成绩及平均分输出到文件score.txt中2022/11/1330/41【例13.5】修改例12.7程序,计算每个学生的4门课程的平均分,将

学生的各科成绩及平均分输出到文件score.txt中2022/11/1331/41【例13.5】修改例12.7程序,计算每个学生的4门课程的平均分,将学生的各科成绩及平均分输出到文件score.txt中2022/11/1332/41【例13.6】在例13.5基础上,从文件score.

txt中读出每个学生的4门课的平均分,各科成绩及平均分2022/11/1333/41【例13.6】在例13.5基础上,从文件score.txt中读出每个学生的4门课的平均分,各科成绩及平均分2022/11/1334/4113.5按数据块

读写文件按数据块读写–从fp所指的文件中读取数据块并存储到buffer指向的内存中–buffer是待读入数据块的起始地址–size是每个数据块的大小(待读入的每个数据块的字节数)–count是最多允许读取的数据块个数(每个数据块

size个字节)–返回实际读到的数据块个数–将buffer指向的内存中的数据块写入fp所指的文件2022/11/1335/41【例13.7】在前几个实例基础上,计算每个学生的4门课程的平均分,将学生的各科成绩及平均分输出到文件stud

ent.txt中,然后再从文件中读出数据并显示到屏幕上2022/11/1336/41【例13.7】在前几个实例基础上,计算每个学生的4门课程的平均分,将学生的各科成绩及平均分输出到文件student.txt中,然后再从文件中读出数据并显示到屏幕上2022/11/1337/41【例13.7】在前

几个实例基础上,计算每个学生的4门课程的平均分,将学生的各科成绩及平均分输出到文件student.txt中,然后再从文件中读出数据并显示到屏幕上2022/11/1338/41【例13.7】在前几个实例基础上,计算每个学生的4门课程的平均

分,将学生的各科成绩及平均分输出到文件student.txt中,然后再从文件中读出数据并显示到屏幕上2022/11/1339/41【例13.7】在前几个实例基础上,计算每个学生的4门课程的平均分,将学

生的各科成绩及平均分输出到文件student.txt中,然后再从文件中读出数据并显示到屏幕上2022/11/1340/41【例13.7】在前几个实例基础上,计算每个学生的4门课程的平均分,将学生的各科成绩及平均分输出到文件student.txt中,然后再从文件中

读出数据并显示到屏幕上2022/11/1341/41Questionsandanswers

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?