《C语言程序设计与实验指导》-10_第1页
《C语言程序设计与实验指导》-10_第2页
《C语言程序设计与实验指导》-10_第3页
《C语言程序设计与实验指导》-10_第4页
《C语言程序设计与实验指导》-10_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1本章目录10.1C语言文件的概述10.2文件类型指针10.3文件的打开和关闭10.4文件的读写10.5文件的定位与检测210.1C语言文件的概念“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。如计算机C盘下名为“a1.txt”的文件为文本文件,名为“w1.doc”的文件为word文档。从文件编码的方式来看,文件可分为:ASCII码文件和二进制码文件。C语言在打开这两种文件时书写有区别,但在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。关于这两种文件的区别可以参考其他文献,这里不再详述。文章主要讨论如何利用C语言打开和关闭外部介质(如硬盘)的文件,如何从文件中读取内容,向文件中写入数据等各种操作。310.2文件类型指针

在C语言中用一个指针变量指向一个文件,这个指针称为文件类型指针。通过文件指针就可对它所指的文件进行各种操作。定义说明文件指针的一般形式为:

FILE*指针变量标识符;其中FILE应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。410.3文件的打开和关闭10.3.1文件的打开(fopen函数)

fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);

例如:C程序源文件为“file1.c”,与该文件同文件夹下有一文本文件“a1.txt”,则C源文件中书写以下语句:

FILE*fp;fp=fopen("a1.txt","r");510.3文件的打开和关闭表10.1文件的打开的方式文件使用方式意义"r"只读打开一个文本文件,只允许读数据"w"只写打开或建立一个文本文件,只允许写数据"a"追加打开一个文本文件,并在文件末尾写数据"rb"只读打开一个二进制文件,只允许读数据"wb"只写打开或建立一个二进制文件,只允许写数据"ab"追加打开一个二进制文件,并在文件末尾写数据"r+"读写打开一个文本文件,允许读和写"w+"读写打开或建立一个文本文件,允许读写"a+"读写打开一个文本文件,允许读,或在文件末追加数据"rb+"读写打开一个二进制文件,允许读和写"wb+"读写打开或建立一个二进制文件,允许读和写"ab+"读写打开一个二进制文件,允许读,或在文件末追加数据610.3文件的打开和关闭10.3.2文件的关闭(fclose函数)文件使用完毕后,应用关闭文件函数——fclose把文件关闭,以避免文件的数据丢失等错误。

fclose函数调用的一般形式是:

fclose(文件指针);例如:

fclose(fp);

正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。710.4文件的读写对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:字符读写函数:fgetc和fputc字符串读写函数:fgets和fputs数据块读写函数:freed和fwrite格式化读写函数:fscanf和fprinf下面分别予以介绍。使用以上函数都要求包含头文件stdio.h。810.4.1fgetc函数和fputc函数1、从文件读字符函数fgetcfgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:

字符变量=fgetc(文件指针);例如:

charch;ch=fgetc(fp);

其意义是从打开的文件fp中读取一个字符并送入字符变量ch中。910.4.1fgetc函数和fputc函数2.向文件写字符函数fputcfputc函数的功能是把一个字符写入指定的文件中,函数调用的形式为:

fputc(字符量,文件指针);其中,待写入的字符量可以是字符常量或变量,例如:

fputc('a',fp);

其意义是把字符a写入fp所指向的文件中。再如:

charch='b';fputc(ch,fp);

其意义是把字符a写入fp所指向的文件中。1010.4.2fgets函数和fputs函数1.从文件读字符串函数fgetsfgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:

fgets(字符数组名,n,文件指针);

其中的n是一个正整数。表示从文件中读出的字符串不超过n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。例如:

chars[20];intn=10;fgets(s,n,fp);

其意义是从fp所指的文件中读出n-1个字符送入字符数组s中;在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。1110.4.2fgets函数和fputs函数2、向文件写字符串函数fputsfputs函数的功能是向指定的文件写入一个字符串,其调用形式为:

fputs(字符串,文件指针);

其中字符串可以是字符串常量,也可以是字符数组名,或指针变量,例如:

fputs("abc123",fp);

其意义是把字符串"abc123"写入fp所指的文件之中。1210.4.3fread函数和fwrite函数1.从文件中读数据块函数freadfread函数的功能是从指定的文件中读出一个数据块,该数据块可能包含若干个数据,函数调用的形式为:

fread(buffer,size,count,fp);

其中:

buffer是表示存放输入数据的首地址,可以是一个指针或数组的名字。

size表示数据块的字节数。

count表示要读写的数据块块数。

fp表示文件指针。例如:

inta[20];fread(a,sizeof(int),5,fp);

其意义是从fp所指的文件中,每次读sizeof(int)个字节(一个整数)送入整数组a中,连续读5次,即读5个实数到fa中。1310.4.3fread函数和fwrite函数2.向文件写数据块函数fwritefwrite函数的功能是向指定的文件中写入一个数据块,函数调用的形式为:

fwrite(buffer,size,count,fp);

表示从buffer首地址开始的内存单元开始连续取count个size字节的数据,写入到fp所指文件中。1410.4.4fscanf和fprintf函数1.从文件中格式化读函数fscanffscanf函数的功能是从指定的文件中按某种格式读一个或多个数据中存放到变量中,函数调用的形式为:

fscanf(文件指针,格式字符串,输入表列);

例如:

inti;chars[20];fscanf(fp,"%d%s",&i,s);

该程序段的功能是从fp所指的文件中连续读出一个整型数据和一个字符串,分别存在整型变量i和字符数组s中。如果文件的内容为:4abc5e;那么执行完上述程序后,i=4,s中存字符串"abc5e"。1510.4.4fscanf和fprintf函数2.向文件格式化写入文件函数fprintffprintf函数的功能是向指定的文件按某种格式写入一个或多个数据,函数调用的形式为:

fprintf(文件指针,格式字符串,输出表列);

例如:

intj=3;chart[20]="ABC";fprintf(fp,"%d%s",j,t);

该程序段的功能是向fp所指的文件写入,分别存在整型变量i和字符数组s中,则执行完程序后文件内容为:3ABC。1610.5文件的定位与检测——10.5.1文件的定位1.rewind函数rewind函数的功能为把文件内部的位置指针移到文件首,其调用形式为:

rewind(文件指针);例10.4

有以下程序#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,l,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是()。B)ChinaB)ChinangC)ChinaBeijingD)BeijingChina1710.5.1文件的定位2.fseek函数

fseek函数的功能是将文件内部位置指针移动到所需要的位置,其调用形式为:

fseek(文件指针,位移量,起始点);

其中:

“文件指针”指向被移动的文件。

“位移量”表示移动的字节数,要求位移量是long型数据,当用常量表示位移量时,要求加后缀“L”。

“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。1810.5.2文件的检测函数1.文件结束检测函数feof

调用格式:

feof(文件指针);

功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论