1、int main() FILE *fp; / 定义文件指针 if( fp = fopen(fi.txt,w) = NULL) / 打开文件 printf( File open error ! n); exit(0); fprintf(fp,%s Hello World ! / 写文件 if(fclose(fp) / 关闭文件Can not close the file !n return 0; 运行程序后,在你所建此程序的目录中,新建一个fi.txt文件,用记事本(或其它文本编辑工具)打开查看,其内容就是” Hello World ! “,如图9.1所示。程序中的fopen()、fprintf
2、()、fclose()是文件操作的函数,在stdio.h中定义。exit语句是退出,在 stdlib.h中定义。 图9.1 查看fi.txt文件内容例2 将下列数据写入文件f.dat中,并再将其读出显示到屏幕上。301101 张山 91301102 陈启 85301103 王亮 78301104 郑旦 69301105 郭敏 80 long num; / 学号 char stname20; / 姓名 int score; / 成绩f.dat) = NULL) / 打开文件301101 张山 91n301102 陈启 85n301103 王亮 78 n301104 郑旦 69n301105 郭敏
3、 80n/将学生数据写到文件中 if(fclose(fp) / 关闭文件 注意:” “在程序中表示其后面的数据放在下一行。 if(fp = fopen(rFile open error! while( !feof(fp) fscanf(fp,%ld%s%d,&num,stname,&score); / fscanf函数是将数据读入 printf(%ld %s %dn,num,stname,score); / 输出到屏幕上 ; if(fclose(fp)Can not close the file!运行程序后,在你所建此程序的目录中,新建一个f.dat文件。双击这个文件出现一个小对话框,在小对话
4、框上点击“打开方式”,又出现一个对话框,选择“从列表中选择程序”,点击“确定”,出现“打开方式”对话框,从中选择“记事本”双击,便在屏幕上显示出该文件的信息。如图9.2所示。 图9.2 读取学生成绩文件的内容程序中调用fscanf()函数,将文件中的数据读入到变量num、stname和score,并通过printf()函数把结果输出到屏幕。在C语言中,文件最基本的操作有两个:从磁盘文件中读取信息(读操作)和把信息放到磁盘文件中(写操作)。为了实现读写操作,首先要定义文件指针,并确定被操作文件的具体文件名,请求系统分配文件缓冲区单元,然后进行文件读写,文件操作完成后关闭文件。在文件操作中,先定义
5、指向文件的指针,然后通过调用专门的函数来实现文件的所有操作。下面先介绍文件的打开、关闭、读、写。1、打开文件打开文件由标准函数fopen()实现,其一般调用形式为:Fopen( “ 文件名 “ , “ 文件打开方式 ” );说 明:a、该函数有返回值,如果执行成功,函数将返回包含文件缓冲区等信息的FILE结构体地址,赋给文件指针fp。否则,返回一个NULL(空值)的FILE指针。b、括号内包括两个参数: “文件名”和“文件打开方式”。两个参数都是字符串。“文件名”指出要对哪个具体文件进行操作,一般要指定文件的路径,如果不写出路径名,则默认与本程序的当前路径相同。文件打开方式用来确定对所打开的文
6、件将进行是么操作。表9.1列出了C语言所有的文件打开方式。从表9.1可知,比如用” r “表示打开一个文本文件并进行读数据操作,” w “表示建立一个新的文本文件,并向该文件进行写数据操作。二进制文件操作与文本文件操作一样,只不过打开方式的表示多加了个字符” b “做后缀。 表9.1 文件打开方式 文本文件(ASCCI) 二进制文件使用方式 含 义 使用方式 含 义 “ r “ 打开文本文件进行只读 “ rb “ 打开二进制文件进行只读 “ w “ 建立新文本文件进行只写 “ wb “ 建立二进制文件进行只写“ a ” 打开文本文件进行追加 “ ab “ 打开二进制文件进行写追加 “ r +
7、“ 打开文本文件进行读/写 “ rb+ “ 打开二进制进行读/写“ w + “ 建立新文本文件进行读/写 “ wb+ “ 建立二进制新文件进行读/写“ a + “ 打开文本文件进行读/写追加 “ ab+ “ 打开二进制文件进行读/写/追加 下面两种方法都以读的方式打开abc.txt文件:fp = fopen(“ abc.txt “,” r “); / 用字符串常量表示文件char *p = “ abc.txt “; / 用字符指针表示文件fp = fopen( p,” r ” );2、关闭文件 当文件操作完后,应及时关闭它,以防止不正常的操作。关闭文件通过调用标准函数fclose()实现,其一
8、般格式为: fclose(文件指针); 该函数将返回一个整数,若该数为0表示正常关闭文件,否则表示无法正常关闭文件,所以关闭文件也应使用条件判断: if ( fclose(fp) printf(“ Can not close the file! n”); exit ( 0 ); 要养成文件使用结束后及时关闭的习惯,一则确保数据完整写入文件,二则及时释放不用的文件缓冲区单元。3、文件复制例3 已知一个文本数据文件f.dat(例2中建好的文件),请将该文件复制一份,保存到文件f2.dat中,并将f2.dat内容在屏幕上显示出来。 FILE *fp1,*fp2; char c= ; int scor
9、e,i=0; if(fp1 = fopen() = NULL)/打开已有的f.dat文件,要读出数据 if(fp2 = fopen(f2.dat) = NULL)/建立f2.dat文件,并打开它,要往里写数据 while(!feof(fp1) / 只要!feof(fp1)为真,说明fp1指针还没有指向文件末尾 c=fgetc(fp1); / 将文件的一个字符赋给c fputc(c,fp2); / 将字符复制到f2.dat if(fclose(fp1) / 关闭f.dat if(fclose(fp2) / 关闭f2.dat) = NULL)/打开f2.dat文件,要读出数据 do / 将复制好的
10、f2.dat文件内容再显示到屏幕上 / fscanf函数是将f2.dat文件中的数据读入到变量中fscanf(fp2, / 将变量内容输出到屏幕上 i+; while(i5);/ 这里一共有5行( 0-4 )输出,所以i5,而用while(!feof(fp2)语句控制结束,程序结束不/ 了,不知为什么?可能最后找不到结束符标志,得需要程序给加上一个才行。 if(fclose(fp2) 运行该程序,观察源程序所在目录下是否产生了f2.dat文件,用记事本打开它,可以看到它与f.dat的内容完全相同。 本程序实现了复制文件功能,涉及对两个文件的操作,所以程序定义了两个FILE结构类型的指针,并分别打开了文件f.dat和f2.dat。在while循环中,只要!feof(fp1)为真,说明fp1指针还没有指向文件末尾,就反复从文件f.dat中读入字符,并将该字符写入文件f2.dat。最终把f.dat文件中的字符逐一读出并写入到文件f2.dat,完成文件赋值。最后分别调用fclose()函数关闭指针fp1和fp2,结束文件操作。在C语言中,scanf()和printf()函数是针对键盘输入和屏幕输出的标准函数。C语言为文件的读写操作也定义了一系列标准函数,它们都在” stdio.h “中说明,因此文件操作需要包含有标准I/O的文件:。文
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1