版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言文件操作学习C语言文件操作.3、文件、文件 文件是存储在外部存储介质上的信息的集合。 每个文件有唯一的文件名(主名每个文件有唯一的文件名(主名. .后缀)来标识。计算机后缀)来标识。计算机实现按名对文件进行读、写等有关操作。实现按名对文件进行读、写等有关操作。 广义上,操作系统将每一个与主机相联的输入输出设备广义上,操作系统将每一个与主机相联的输入输出设备都看作是文件。(显示器、打印机是输出文件,键盘是输入都看作是文件。(显示器、打印机是输出文件,键盘是输入文件)。文件)。一、文件定义与分类一、文件定义与分类文件系统文件系统 概述概述42 2、文件的分类、文件的分类 (1 1)按存储介质
2、)按存储介质: : 磁盘文件、磁带文件。磁盘文件、磁带文件。(2 2)按文件的内容:)按文件的内容:( (从程序设计的角度看从程序设计的角度看) ) 源程序、目标文件、可执行文件、数源程序、目标文件、可执行文件、数据文件。据文件。(3 3)按文件的编码方式(存储形式)按文件的编码方式(存储形式): : 文本文件、二进制文件。文本文件、二进制文件。5二、二、数据文件的存储形式1、字符文件(文本文件)、字符文件(文本文件):每个字符用一个每个字符用一个 ASCIIASCII码码 存储(即一个字符占一个字节)。存储(即一个字符占一个字节)。2、二进制文件:以数据在内存中的形式原样存于磁盘。、二进制文
3、件:以数据在内存中的形式原样存于磁盘。如:一个短整数(如:一个短整数(short型),型),其二进制文件存储方式都是占个字节;其二进制文件存储方式都是占个字节;而字符文件存储方式所占字节数该数的数字个数。而字符文件存储方式所占字节数该数的数字个数。int型数二进制文件字符文件型数二进制文件字符文件126 字节字节 字节字节1268 字节字节 字节字节6例如:例如:整数整数1268文本文件形式文本文件形式1的的ASCIIASCII码码00110001001100100011011000111000二进制文件形式二进制文件形式00000100111101001268的二进制数的二进制数2的的ASC
4、IIASCII码码6的的ASCIIASCII码码8的的ASCIIASCII码码7三.标准文件系统、非标准文件系统程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入输入输入文件缓冲区输入文件缓冲区输出输出输入输入磁盘磁盘内存内存 非标准文件系统非标准文件系统:不使用缓冲区的磁盘文件系统不使用缓冲区的磁盘文件系统标准标准c 采用缓冲文件系统,其原理图如下:采用缓冲文件系统,其原理图如下:输出输出84.文件存取方式在在C语言中语言中,文件的存取有两种方式:文件的存取有两种方式:(2)随机存取)随机存取(1)顺序存取)顺序存取9标准文件操作标准文件操作一、一、 标准文件类型指针标准文件类型指针 每个
5、被使用的文件都在内存中开辟一个区域,每个被使用的文件都在内存中开辟一个区域,用来存放文件的有关信息。用来存放文件的有关信息。 这些信息是保存在一个结构体类型的变量中这些信息是保存在一个结构体类型的变量中。该结构体类型是由系统定义的,取名为。该结构体类型是由系统定义的,取名为FILEFILE。1.1.文件类型指针概述文件类型指针概述10typedef struct short level; unsigned flags; char fd; unsigned char hild; short bsize; unsigned char *buffer; unsigned istemp; short
6、token; FILE;FILEFILE:一个标一个标准的标准的标识符,识符,但不是但不是关键字关键字11 如如 FILE *fp; fp是一个指向是一个指向FILE类型结构体的指针变量类型结构体的指针变量,通过通过该结构体变量中的文件信息能够访问该文件。该结构体变量中的文件信息能够访问该文件。 如果有如果有N个文件,一般应设个文件,一般应设N个指针变量,使它们个指针变量,使它们分别指向分别指向N个文件(确切地说,指向该文件的信息个文件(确切地说,指向该文件的信息结构体),以实现对文件的访问。结构体),以实现对文件的访问。FILE *指针变量标识符;指针变量标识符;2. 文件型指针变量的定义文
7、件型指针变量的定义12标准文件操作的四个基本步骤:标准文件操作的四个基本步骤:1. 文件类型指针的定义文件类型指针的定义2. 打开标准文件打开标准文件3. 标准文件的读或写的操作标准文件的读或写的操作4. 标准文件的关闭操作标准文件的关闭操作13打开文件打开文件对文件进行读或写对文件进行读或写关闭文件关闭文件文件的操作步骤文件的操作步骤文件打开函数文件打开函数文件读写函数文件读写函数文件关闭函数文件关闭函数定义文件类型指针定义文件类型指针指针定义指针定义14二二. . 标准文件的打开标准文件的打开打开文件的含义打开文件的含义 将文件信息从磁盘装入计算机内存将文件信息从磁盘装入计算机内存, ,建
8、立文件的各建立文件的各种有关信息种有关信息, ,并使文件指针指向该文件并使文件指针指向该文件, ,即建立文件类型指即建立文件类型指针与文件名之间的关联针与文件名之间的关联. .2. .文件的打开函数文件的打开函数: fopen: fopenfp=fopen(文件名,使用文件方式);文件名,使用文件方式);函数原型函数原型:FILE *fopen(char *filename,char *mode);15FILE类型指针类型指针-成功成功NULL -失败失败 fopen( )函数的返回值应赋给一个函数的返回值应赋给一个FILE指针变指针变量,量, 否则,此函数的返回值就会丢失,导致无法对此否则,
9、此函数的返回值就会丢失,导致无法对此文件进行操作。文件进行操作。例如:例如: FILE *fp; fp=fopen(”A1”, ”r”);以上语句表示:以上语句表示:要打开名字为要打开名字为A1的文件,使用文件的文件,使用文件的的方式为方式为“读入读入”,fp指向指向A1文件文件。返回值返回值:16文件打开函数的调用给编译系统的三个信息:文件打开函数的调用给编译系统的三个信息:1. 需要打开的文件名;需要打开的文件名;2. 使用文件的操作方式;使用文件的操作方式;3 .让哪一个指针变量指向被打开的文件。让哪一个指针变量指向被打开的文件。17 ”r r” (只读)(只读) 为输入打开一个文本文件
10、为输入打开一个文本文件 ”w w” (只写)(只写) 为输出打开一个文本文件为输出打开一个文本文件 ”a a” (追加)(追加) 向文本文件尾增加数据向文本文件尾增加数据 ”rbrb” (只读)(只读) 为输入打开一个二进制文件为输入打开一个二进制文件 ”wbwb” ( (只写)只写) 为输出打开一个二进制文件为输出打开一个二进制文件 ”abab” (追加)(追加) 向二进制文件尾增加数据向二进制文件尾增加数据 3. C语言文件操作方式语言文件操作方式r: read , w: write , a: append , b:binary ,+: 读写读写18 ”r+r+” (读写)(读写) 为读为
11、读/ /写打开一个文本文件写打开一个文本文件 ”w+w+” (读写)(读写) 为读为读/ /写建立一个新的文本文件写建立一个新的文本文件 ”a+a+” (读写)(读写) 为读为读/ /写打开一个文本文件写打开一个文本文件 ”rb+rb+” (读写)(读写) 为读为读/ /写打开一个二进制文件写打开一个二进制文件 ”wb+wb+” ( ( 读写)读写) 为读为读/ /写建立一个新的二进制文件写建立一个新的二进制文件 ”ab+ab+” ( ( 读写)读写) 为读为读/ /写打开一个二进制文件写打开一个二进制文件C语言文件操作方式语言文件操作方式(续续)r: read , w: write , a:
12、 append , b:binary ,+: 读写读写19(1 ) 用用”r”方式打开的文件只能用于向计算机输入数据,而方式打开的文件只能用于向计算机输入数据,而且该文件应该已经存在;且该文件应该已经存在; 4. 标准文件操作方式的说明标准文件操作方式的说明(1-5)(2) 用用”w”方式打开的文件只能用于向该文件写数据,方式打开的文件只能用于向该文件写数据,而不能用来向计算机输入。而不能用来向计算机输入。 如果不存在该文件如果不存在该文件,则在打开则在打开时建立一个。时建立一个。 如果存在该文件如果存在该文件,则则 新写入的数据将覆盖新写入的数据将覆盖掉以前的数据。掉以前的数据。(3) 如果
13、希望向文件末尾添加新的数据(不希望删除原有数如果希望向文件末尾添加新的数据(不希望删除原有数据)据),则应该用则应该用”a”方式打开。方式打开。20(4) 用用”r+”、 ”w+” 、 ”a+”方式打开的文件可以用来方式打开的文件可以用来输入和输出数据。输入和输出数据。(5) 在程序开始运行时,系统自动打开三个标准文件:在程序开始运行时,系统自动打开三个标准文件:标准输入标准输入(stdin)、标准输出、标准输出(stdout)、标准出错输出、标准出错输出(stderr)。4. 标准文件操作方式的说明标准文件操作方式的说明(1-5)21例:打开例:打开C盘根下的盘根下的my文件文件,验证文件能
14、否正确打开验证文件能否正确打开.#include void main三三 FILE *fa; if(fa=fopen(”,”r”)=NULL) printf(“n Cannot open the file!”); exit(0); /*退出退出*/ else printf(” n Open! ”); ?提示:提示:1. 该文件在磁盘上不存在该文件在磁盘上不存在/存在存在时,比较运行结果。时,比较运行结果。2. 将程序中的将程序中的”r”改为改为”w” ,当当该文件在磁盘上不存在该文件在磁盘上不存在/存在时存在时,比较运行结果,比较运行结果。22三三. 标准文件的关闭函数标准文件的关闭函数: f
15、close 关闭文件指针关闭文件指针fp所指的文件所指的文件,释放相应的文件信息区释放相应的文件信息区. 正常关闭文件时正常关闭文件时,函数返回值为函数返回值为0. 函数原型函数原型: int fclose(FILE *fp);功能:功能: 在使用完一个文件后应该关闭它,以防止它再被在使用完一个文件后应该关闭它,以防止它再被误用。误用。23函数原型函数原型:四四 标准文件读写函数标准文件读写函数1. 1. 读文件字符函数读文件字符函数:fgetc:fgetcfp是指向所读文是指向所读文件指针变量件指针变量int fgetc(FILE *fp) ;函数功能函数功能: 从文件指针从文件指针fp指向
16、的文件当前位置指向的文件当前位置(位置指针位置指针)读出读出一个字符一个字符,然后文件位置指针自动后移然后文件位置指针自动后移,指向文件中指向文件中的下一个字符的下一个字符,返回值为读入的字符返回值为读入的字符. 若遇到文件结束符若遇到文件结束符,则返回结束符则返回结束符EOF(-1).例例:ch=fgetc(fp);24例例: 将磁盘文件将磁盘文件”的信息读出并显示到屏幕上的信息读出并显示到屏幕上.(假设文件已经存在假设文件已经存在,若不存在若不存在,可以用记事本或其它可以用记事本或其它文本编辑器编辑一个文本编辑器编辑一个)#include void main三三 FILE *fp; cha
17、r c; if (fp=fopen( ” , ”r” )=NULL) printf(“n File notexist!”);exit(0); while(c=fgetc(fp)!=EOF) putchar( c ); fclose(fp);25例例11.3 编写一个程序编写一个程序,实现实现DOS中的中的type命令的功能命令的功能.#include void main(int argc,char *argv) FILE *fp; char c; if (argc2)printf(”n NO file name”); exit(0); if (fp=fopen( ” , ”r” )=NULL)
18、 printf(” n File not exist! ”);exit(0); while(c=fgetc(fp)!=EOF) putchar( c ); fclose(fp);262 . 文件写入字符函数文件写入字符函数: fputc函数返回值函数返回值: 输出成功输出成功, 返回值就是输出的字符;返回值就是输出的字符; 输出失败输出失败, 返回一个返回一个EOF(值为值为-1)。功能:把一个字符功能:把一个字符ch写到写到fp指向的磁盘文件上去。指向的磁盘文件上去。函数原型函数原型: int fputc(int ch, FILE *fp);例例: FILE *fp; char ch= A;
19、fputc(ch,fp)27 putchar函数就是从函数就是从fputc函数派生出来的。函数派生出来的。 putchar(c)是用是用#define定义的宏:定义的宏: # define putchar( c ) fputc(c,stdout) 同理,同理,getchar函数是从函数是从fgetc函数派生出来的。函数派生出来的。 getchar(c)是用是用#define定义的宏:定义的宏: # define getchar( c ) fgetc(stdin)注注28例例11.4 从键盘输入一些字符存到一个磁盘文件中,从键盘输入一些字符存到一个磁盘文件中,以以“#” 结束。结束。#inclu
20、de void main三三 FILE *fp; char c; if (fp=fopen( ” , ”w” )=NULL) printf(” n File cannot open! ”);exit(0); while(c=getchar( )!=”#” ) fputc ( c,fp ); fclose(fp);29例例11.5 将文件的内容复制到文件中。将文件的内容复制到文件中。#include void main三三 FILE *f1,*f2; if (f1=fopen( ” , ”r” )=NULL) printf(” n File cannot open! ”);exit(0); if
21、 (f2=fopen( ” , ”w” )=NULL) printf(” n File cannot creat! ”);exit(0); while(c=fgetc(f1 )!=EOF ) fputc ( c,f2 ); fclose(f1); fclose(f2);303. 3. 读文件字符串函数读文件字符串函数:fgets:fgets 从指针从指针 fp指向的文件中读取指向的文件中读取 len 1 个字符,把它送个字符,把它送到由指针到由指针buf 指向的字符数组中。指向的字符数组中。char * fgets ( char * buf , int len , FILE *fp) ;函数原
22、型函数原型:函数功能:函数功能:字符数组的长度应大于字符数组的长度应大于len,可存放可存放len-1个字符个字符,字符数组字符数组的最后一个元素为的最后一个元素为0.若在读入若在读入len-1个字符前遇到换行符个字符前遇到换行符n或文件结束或文件结束符号符号EOF,立即结束读入操作立即结束读入操作.31例例11.6 利用函数利用函数fgets,将文本文件中的内容全部读将文本文件中的内容全部读出并显示在屏幕上。出并显示在屏幕上。分析分析:(1 1)一般地,文本文件以行为单位,每行最多)一般地,文本文件以行为单位,每行最多8080个字符,再加上个字符,再加上一个行结束符号即换行符一个行结束符号即
23、换行符nn,则每行至少需要,则每行至少需要8181个字节的存储空间个字节的存储空间。(2 2)使用函数)使用函数fgetsfgets读取字符串时,若在读入读取字符串时,若在读入len-1len-1个字符完成个字符完成之前遇到换行符之前遇到换行符nn或文件结束符号或文件结束符号EOFEOF,立即结束读入操作。无论,立即结束读入操作。无论读入的字符是否等于或小于读入的字符是否等于或小于len-1len-1个,函数为读入的字符串之后加一个,函数为读入的字符串之后加一个个00。因此,读入的字符(包括。因此,读入的字符(包括00)只有)只有lenlen个。个。(3 3)定义文件指针。)定义文件指针。(4
24、 4)以只读方式打开文件。)以只读方式打开文件。(5 5)当文件未结束时,反复读出字符串并输出。)当文件未结束时,反复读出字符串并输出。(6 6)关闭文件。)关闭文件。 32#includevoid main讲义讲义FILE *fp; char str81; if(fp=fopen(”aa.txt”,”rt”)=NULL) printf(”Cannot open file!”); getchar三;三;exit(1); while(fgets(str,81,fp)!=NULL) puts(str);); fclose(fp););例例: 利用函数利用函数fgets,将文本文件中的内容全部读出并
25、显示在屏幕上。将文本文件中的内容全部读出并显示在屏幕上。334. 将字符串写入文件的函数将字符串写入文件的函数: fputs( )char * fputs ( char * buf, FILE * fp ) ; 把由指针把由指针buf 指向的字符数组中的字符串指向的字符数组中的字符串写入由指针写入由指针 fp指向的文件中。指向的文件中。buf :字符串常量:字符串常量,字符数组名字符数组名,指针变量指针变量函数原型函数原型:函数功能函数功能:#include void main三FILE *fp; char buf 81; if( (fp=fopen(”, ”a” ) = =NULL) pri
26、ntf(” File cannot open! ” );exit(0); while (fgets(buf,81,stdin)!=NULL ) fputs(buf,fp); fclose(fp);例例 从键盘输入若干行字符从键盘输入若干行字符, ,将它们添加到磁盘文件将它们添加到磁盘文件中中.355. 5. 数据块读写函数数据块读写函数:fread:fread和和fwritefwritebuffer:是一个指针。是一个指针。 对于对于fread,它是读入数据的存放地址。,它是读入数据的存放地址。 对于对于fwrite,是要输出数据的地址(起始地址)。,是要输出数据的地址(起始地址)。size:
27、 要读写的字节数。要读写的字节数。count:要进行读写多少个要进行读写多少个size字节的数据项。字节的数据项。fp: 文件型指针。文件型指针。int fread(void *buffer,int size,int count,FILE *fp);int fwirte(void *buffer,int size,int count,FILE (fp);函数原型函数原型:36例例11.8 11.8 从键盘输入两个学生的信息,写入磁盘文件中从键盘输入两个学生的信息,写入磁盘文件中. .分析:分析:(1 1)建立学生信息的结构体。)建立学生信息的结构体。(2 2)定义文件指针。)定义文件指针。(3
28、 3)打开指定的文件。)打开指定的文件。(4 4)将学生信息写入文件。)将学生信息写入文件。(5 5)关闭文件。)关闭文件。37#include #include sstruct studentsstruct student char name10 char name10; int numint num; int ageint age; char addr15char addr15; boy2 boy2, * *pppp;#define size sizeof(struct student)#define size sizeof(struct student)38void main三三FILE
29、 *fp; char ch,filename20; int i; gets(filename); /*输入文件名输入文件名*/ fp=fopen(filename,”wb+”); /*以读写方式打开二进制文件,也省略了检测以读写方式打开二进制文件,也省略了检测*/ printf(”ninput datan”); pp=boy; for(i=0;iname,&pp-num, &pp-age,pp-addr); fwrite(boy,size,2,fp); fclose(fp);); /*将两个学生的信息写将两个学生的信息写入文件入文件*/39例例11.9 11.9 将磁盘文件中的
30、学生信息输出到屏幕上。将磁盘文件中的学生信息输出到屏幕上。 #includestruct stuchar name10; int num; int age; char addr15;boy2,*pp;#define size sizeof(struct stu)40void main讲义讲义FILE *fp; char ch,filename20; int i; gets(filename);); pp=boy; fp=fopen(filename, ”wb+”);); printf(”nnnametnumber age addrn”); fread(pp,size,2,fp); for(i=
31、0;iname, &pp-num,&pp-age,pp-addr); fclose(fp);); 41一般调用方式为:一般调用方式为:6. 6. 格式化写读函数格式化写读函数:fprintf:fprintf和和fscanffscanffprintf(文件指针,格式字符串,输出表列(文件指针,格式字符串,输出表列) );fscanf(文件指针,格式字符串,输入表列(文件指针,格式字符串,输入表列); 按照指定格式,向文件写按照指定格式,向文件写按照指定格式,从文件读按照指定格式,从文件读注意:注意:fprintf和和fscanf函数对磁盘文件读写函数对磁盘文件读写 printf和
32、和scanf函数对显示器或键盘操作函数对显示器或键盘操作.42例如例如:fscanf(fp, ”%d,%f”,&i,&t); 按格式字符串规定的格式,从按格式字符串规定的格式,从fp指定的文件中读取数据分指定的文件中读取数据分别送入变量别送入变量i和和t中中. .若磁盘文件上有以下字符若磁盘文件上有以下字符: 则:则: 4 i 5.6 tfprintf(fp, ”,i,t);将整型变量将整型变量i和实型变量和实型变量t的值按的值按%d和的格式输出到和的格式输出到fp指向指向的文件上的文件上。如果如果,则输出到磁盘文件上的是以下的字符串则输出到磁盘文件上的是以下的字符串: : 4
33、3例例11.10 按指定的格式按指定的格式, ,将学生信息写入到一个二进制文件将学生信息写入到一个二进制文件stud. dat中中.#includestruct studentchar name10; int num; int age; char addr15;boy2,*pp;void main三三FILE *fp; char ch, filename20; int i; gets(filename); pp=boya;if(fp=fopen(filename,”wb+”)=NULL) printf(”Cannot open file!”);getch三三;exit(1); printf ”
34、ninput datan”);for(i=0;iname,&pp-num,&pp-age,pp-addr);pp=boya; for(i=0;iname,&qq-num,&qq-age, qq-addr);); fclose(fp); 44例例11.11 从从文件文件stud. dat中中,按指定的格式按指定的格式, ,将学生信息读出将学生信息读出并显示到屏幕上并显示到屏幕上.#includevoid main三三FILE *fp; char ch, filename20; int i; struct student boy2,*pp; printf(”nfil
35、ename:”); gets(filename); fp=fopen(filename,”rb+”);for( (i=0; ;iname,& &pp-num, & &pp-age,pp-addr) );printf( (”nnnametnumber age addrn”);pp=boy;for( (i=0; ;iname,pp-num,pp-age, pp-addr) );fclose( (fp) );程序中结构体的说明参考例程序中结构体的说明参考例45五五 文件的随机读写文件的随机读写 移动文件位置指针的操作称为文件的定位移动文件位置指针的操作称为文件的定位.
36、 . 实现随机读写的关键是要按指定的条件进行文件的实现随机读写的关键是要按指定的条件进行文件的定位操作。文件定位操作是通过库函数的调用来完成的定位操作。文件定位操作是通过库函数的调用来完成的。 在每个打开的文件中,有一个文件位置指针,它指在每个打开的文件中,有一个文件位置指针,它指向将要读写的字符位置。当对文件进行顺序读写时,每向将要读写的字符位置。当对文件进行顺序读写时,每读完一个字符,该位置指针就自动移到下一个字符位置读完一个字符,该位置指针就自动移到下一个字符位置。 在实际问题中,常要求读写文件中某些指定的部分。为了避免不必要的读或写的操作,可先移动文件的位置指针到需要读写的位置,再进行
37、读写,这种读写操作方式称为随机读写随机读写。定位定位随机读写随机读写顺序读写顺序读写461. 1. 文件指针定位文件指针定位函数函数:rewind:rewind函数原型:函数原型:int rewindint rewind(FILE FILE * *fpfp););函数功能:函数功能:把文件指针把文件指针fpfp指向文件的内部位置指针移到文件首。指向文件的内部位置指针移到文件首。2.2.文件指针定位函数文件指针定位函数:fseek:fseek函数原型:函数原型:int fseek(FILE *fp,long offset,int pos);函数功能:函数功能:将文件指针将文件指针fpfp指向文件
38、的内部位置指针从指向文件的内部位置指针从pospos指定的位置指定的位置开始移动开始移动offsetoffset个字节个字节。47起始点表示方法起始点表示符号数字表示文件首当前位置文件末尾SEEK_SETSEEK_CURSEEK_END012 offset为位移量,表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错,当用常量表示位移量时,要求加后缀“l”或“L”. 若offset为负数,表示向文件首方向移动,否则是向文件尾方向移动; pos为起始点,表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾. 48例如:例如:fseek(fp,10
39、0L,0); 文件指针从文件开始处向后移动文件指针从文件开始处向后移动100100个字节个字节fseek(fp,60L,1); 文件指针从当前位置向后移动文件指针从当前位置向后移动6060个字节个字节fseek(fp,-10L,2); 文件指针从文件末尾处向前移动文件指针从文件末尾处向前移动1010个字节个字节注意:位移量一般被要求是注意:位移量一般被要求是long型数据,这样当型数据,这样当 文件的长度大于文件的长度大于64K时不致出问题。时不致出问题。49#include “stdio.h”void main三FILE *fp1,*fp2; fp1=fopen(”, ”r”); fp2=f
40、open(”, ”w”); while(!feof(fp1) putchar(getc(fp1); rewind(fp1); while(!feof(p1) putc(getc(fp1),fp2); fclose(fp1);fclose(fp2); 例例 有一个磁盘文件,第一次使它显示在屏幕上,第有一个磁盘文件,第一次使它显示在屏幕上,第二次把它复制到另一文件上。二次把它复制到另一文件上。50例例11.13 11.13 在磁盘文件上存有在磁盘文件上存有1010个学生的数据。要求将第个学生的数据。要求将第1 1、3 3、5 5、7 7、9 9个学生数据输入计算机,并在屏幕上显示出来。个学生数据输
41、入计算机,并在屏幕上显示出来。 #includestruct student_type char name10; int num; int age; char sex; stud10;51void main三三 int i; FILE *fp; if (fp=fopen(stud.dat, rb)=NULL) printf(cannot open filen); exit(0); 52for(i=0;i10;i+=2) fseek(fp,i*sizeof(struct student_type),0); fread(&studi,sizeof(struct student_type),
42、1,fp); printf(“%s %d %d %cn”, ,studi.num,tudi.age,studi.sex); fclose(fp);53六六. 文件的检测函数文件的检测函数 1文件结束检测函数feof 函数原型:int feof(FILE *fp);函数功能:判断fp指向的文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。2文件出错检测函数ferror 函数原型: int ferror(FILE *fp);函数功能:检查文件fp在用各种输入输出函数进行读写时是否出错。若出错,返回值为1,否则返回0。3文件出错标志和文件结束标志置0函数clearer
43、r函数函数原型:int clearerr(FILE *fp); 函数功能:用于清除出错标志和文件结束标志,使它们为0值。 5412.3 非标准文件操作标准文件的输入和输出称为高层I/O。非标准文件的输入和输出称为低层I/O。 在非标准文件系统中系统不会自动提供文件缓冲区没有FILE文件指针读写文件时和文件联系的是一个整数,称为文件号55一一. . 非标准文件的打开、关闭非标准文件的打开、关闭 1打开文件函数open 函数原型:函数原型:int openint open(char char * *filenamefilename,int modeint mode););函数功能:函数功能:按按modemode指定的方式打开名为指定的方式打开名为filenamefilename的文件,打开成功,函数返回的文件,打开成功,函数返回一个正整数称为文件号,否则返回一个正整数称为文件号,否则返回-1-1。filenamefilename是任意是任意DOSDOS文件名,可文件名,可以是字符串常量或变量;以是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国高强高模聚乙烯醇纤维(PVA)行业市场规模及投资前景预测分析报告
- 2025年光气化装置模拟练习题
- 2025年公共卫生资格专项练习卷
- 儿科护理康复护理
- ICU护理免疫保护
- 尾矿库工艺监督工安全生产意识水平考核试卷含答案
- 硬质合金精加工工创新实践竞赛考核试卷含答案
- 车轮轧制工安全生产规范水平考核试卷含答案
- 电力电容器卷制工岗前理论考核试卷含答案
- 钨酸铵溶液制备工操作技能评优考核试卷含答案
- 幼儿园入学准备教育指导要点
- 下肢深静脉血栓护理
- 胸痛早期识别及护理
- 2024年毛绒娃娃项目可行性研究报告
- 北京化工大学《数据库原理与应用》2021-2022学年第一学期期末试卷
- 《阻燃材料与技术》课件全套 颜龙 第1讲 绪论 -第11讲 阻燃性能测试方法及分析技术
- 《动画剧本创作(第3版)》中职全套教学课件
- 川教版三年级下册《生命生态安全》教学设计含教学计划【附安全知识】
- 附件3:公司境外突发事件应急预案
- 陪伴孩子面对挑战
- 《齐桓晋文之事》教学课件
评论
0/150
提交评论