C程序设计文件的输入输出.pptx
《C程序设计文件的输入输出.pptx》由会员分享,可在线阅读,更多相关《C程序设计文件的输入输出.pptx(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1二进制文件二进制文件 把把数数据据按按其其在在内内存存中中的的形形式式存存储储在在文文件件中中,信信息息在在文文件件中中的的表表示示形形式式与与在在计计算算机机内内存存中中的的表表示示形形式式完完全全一一样样,文文件件中中的的数数据据信信息息可可以以被被分分成成一一个个个个字字节节,但但通通常常是是由由若若干干字字节节构构成成一一个个有有意意义义的的数数据据信信息息。例例如如,由由4个个字字节节信信息构成一个整数。息构成一个整数。正文文件与二进制文件的区别正文文件与二进制文件的区别1.存存储储数数值值型型数数据据的的形形式式不不同同。例如:整数10000 在内存中用4个字节表示,保存到正文文
2、件中要占5个字节;保存到二进制文件中只占4个字节。2.正正文文文文件件的的数数据据是是字字符符,便便于于阅阅读读。但但二二进进制制文文件件中中的的信息难以理解。信息难以理解。文件类型第1页/共35页2缓冲区缓冲区 操作系统为能高效地管理和控制设备,给程序正在使用的每个文件在内存中开辟一个适当大小的缓冲区。程序要从文件读入一些信息时,系统先一次性地读入足够多的信息存于缓冲区中,供程序一部分一部分地使用。程序要写信息到文件时,也先把信息写到缓冲区中,待缓冲区写满或写文件结束时,才把缓冲区中的内容写到文件中。程序要读写文件中的数据,首先打开要读写的文件(写文件时可能要新建文件),然后才能对该文件读写
3、数据,并在使用结束时关闭文件。程序与文件交换数据的实现过程第2页/共35页3文件类型文件类型 FILE 用于存放有关对文件进行操作所需的控制信息结构,如文件名、文件读写状态、文件缓冲区大小和位置、当前读写位置等。文件类型由系统预定义。文件类型指针变量文件类型指针变量 FILE *fp;程序在使用文件前,先调用打开函数。打开函数为文件指定一个FILE类型的结构,并返回该结构的指针。系统通过指向该结构的指针才能正确读写文件。有了文件指针变量,使得C程序能找到与它对应的文件。在程序中若要访问n个文件,一般应设n个文件指针变量。文件类型指针变量第3页/共35页41.文件打开函数文件打开函数 fopen
4、()形式:fopen(文件名,使用方式)功能:分分配配一一个个存存放放文文件件控控制制信信息息的的结结构构,并并返返回回这这个个结结构的指针。构的指针。其中:文件名(包括目录路径)为字符串表达式。函数返回值:函数返回值:如果打开成功,函数返回文件指针;打开不如果打开成功,函数返回文件指针;打开不成功,返回成功,返回NULL。例如:fp=fopen(usr4smp.dat,w);表 示:以 写 方 式 打 开 根 目 录 下 的 usr4子 目 录 中 的 smp.dat 文件。第1个为转义字符8.2 常用的数据文件库函数第4页/共35页5 可能会因某种原因不能打开文件。例如,读文件方式打开一个
5、不存在的文件;在写文件方式下,外部存储介质无剩余的自由空间,或外设故障;或超过系统能同时打开的文件数等。文件不能打开时,函数fopen()将返回空指针值NULL。程序应考虑到文件不能正常打开的极端情况,应用以下形式的代码描述打开一个文件的要求:if(fp=fopen(fname,r)=NULL)printf(不能打开文件%s。n,fname);return;1.文件打开函数文件打开函数 fopen()第5页/共35页6文件使用方式 意 义 r 只读,为读打开正文文件 w 只写,为写打开正文文件 a 追加,从正文文件尾开始写 rb 只读,为读打开二进制文件 wb 只写,为写打开二进制文件 ab
6、追加,从二进制文件尾开始写 r+读写,为读/写打开正文文件 w+读写,为读/写建立并打开新的正文文件 a+读写,为读/写打开正文文件表8-1 8-1 文件使用方式第6页/共35页7形式:fclose(fp)功能:功能:使文件指针变量使文件指针变量fp终止原先调用函数终止原先调用函数 fopen()时所时所建立的与文件的联系。建立的与文件的联系。函数返回值:函数返回值:如果关闭成功,函数返回如果关闭成功,函数返回0;如果检测到错;如果检测到错误,返回误,返回EOF(在stdio.h文件中定义为 1)。例如:fclose(fp);说明:说明:1.文件被关闭后,不能再通过该文件指针变量对其原先文件被
7、关闭后,不能再通过该文件指针变量对其原先相连的文件进行读写操作,除非被再次打开。相连的文件进行读写操作,除非被再次打开。2.文件被关闭后,原文件指针变量又可用来打开其他文文件被关闭后,原文件指针变量又可用来打开其他文件,与其他文件建立新的相联系。件,与其他文件建立新的相联系。2.文件关闭函数文件关闭函数 fclose()第7页/共35页8形式:fgetc(fp)功能:功能:从文件指针从文件指针 fp 指向的文件读入一个字符(类似于指向的文件读入一个字符(类似于getchar函数)。函数)。函数返回值:函数返回值:读入成功,返回读入的字符;读入时遇到文读入成功,返回读入的字符;读入时遇到文件结束
8、,则返回文件结束标记件结束,则返回文件结束标记EOF。例如:ch=fgetc(fp);表示:表示:从从 fp 所指文件读入一个字符存于变量所指文件读入一个字符存于变量 ch。3.从文件读一个字符函数从文件读一个字符函数fgetc()第8页/共35页9形式:fputc(ch,fp)功能:将 ch 中的字符输出到文件指针 fp 指向的文件中(类似于putchar函数)。函数返回值:输出成功,返回输出的字符;输出失败则返回EOF。例如:fputc(A,fp);表示:表示:将大写字母将大写字母 A 写到写到 fp 指向的文件中。4.写一个字符到文件函数写一个字符到文件函数fputc()第9页/共35页
9、10【例1】从键盘上输入字符,依次送入指定的文件,直到输入一个#为止。#include void main()FILE*fp;char ch,fname40;printf(输 入 文 件 名:);scanf(%s,fname);fp=fopen(fname,w);fflush(stdin);/*清输入缓冲区*/printf(开始输入字符串:n);ch=getchar();while(ch!=#)fputc(ch,fp);ch=getchar();fclose(fp);/*关闭文件*/fputc()和fgetc()函数例1设运行情况如下:设运行情况如下:输入文件名输入文件名:d:file1.tx
10、t开始输入字符串开始输入字符串:Fudan University.Shanghai,China.#第10页/共35页11【例2 2】将一个文件中的数据复制到另一个文件中。#include void main()FILE*in,*out;char ch,infile40,outfile40;printf(输入源文件名:);gets(infile);/*或或 scanf(%s%*c,infile);*/if(in=fopen(infile,r)=NULL)printf(不能打开源文件%sn,infile);scanf(%*c);/*/*起暂停作用起暂停作用 */return;fputc()和fge
11、tc()函数例2第11页/共35页12 printf(输入目标文件名:);gets(outfile);out=fopen(outfile,w);while(ch=fgetc(in)!=EOF)fputc(ch,out);fclose(in);fclose(out);fputc()和fgetc()函数例2设运行情况如下:设运行情况如下:输入源文件名:输入源文件名:d:file1.txt输入目标文件名:输入目标文件名:d:file2.txt第12页/共35页13形式:fprintf(文件指针文件指针,格式字符串格式字符串,输出项表输出项表)功能:作用类似于printf函数。函数返回值:输出成功,返
12、回实际输出的字符数;输出失败则返回EOF。例如:fprintf(wp,i=%d r=%6.4fn,i,r);表示:将整型变量 i 和实型变量 r 的值按格式输出到 wp 指向的文件中。5.格式输出函数格式输出函数 fprintf()第13页/共35页14形式:fscanf(文件指针,格式字符串,输入项地址表)功能:作用类似于scanf函数。函数返回值:读取成功,返回实际读入数据的个数;读入失败则返回EOF。例如:fscanf(rp,%d%f,&i,&r);表示:从 rp 指向的文件上为整型变量为整型变量 i 和浮点型变量和浮点型变量 r 读入数据读入数据。6.格式输入函数格式输入函数 fsca
13、nf()第14页/共35页15形式:fgets(str,n,fp)功能:从指定的文件读取 n-1 个字符,并存入字符数组 str 中(类似 gets 函数)。函数返回值:函数返回值:读取成功,返回读取成功,返回 str 的首地址;读入失败则返回NULL地址。说明:1.当当连连续续读读入入 n-1 个个字字符符,或或遇遇到到换换行行符符,或或遇到遇到 文件结束时,读字符过程结束。文件结束时,读字符过程结束。2.字符串读入后,在最后自动加一个0。例如:char a80;FILE *in;while(!feof(in)printf(%s,fgets(a,80,in);表示:将文件内容一行一行地输出。
14、7.从文件读字符串函数从文件读字符串函数fgets()第15页/共35页16形式:fputs(str,fp)功能:将字符串输出到 fp 指向的文件(类似 puts函数)。其中:str 可以是字符串常量、字符数组或字符指针。函数返回值:输出成功,返回最后输出的字符;输出失败,返回EOF。例如:fputs(China,fp);表示:将字符串 China 输出到 fp 指向的文件。8.写字符串到文件函数写字符串到文件函数fputs()第16页/共35页17形式:rewind(fp)功能:将fp指向的文件中的当前读写位置回到文件之首。函数返回值:无。9.回到文件头函数回到文件头函数rewind()第1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 文件 输入输出
限制150内