C言语文件的翻开与封闭
在C言语中,文件操作多是由库函数来完成的,这节引见文件的翻开和封闭。
fopen() 函数用来翻开一个文件,它的原型为:
FILE*fopen(char*filename,char*mode);
filename为文件名(包含文件途径),mode为翻开方法,它们多是字符串。fopen() 会获取文件信息,包含文件名、文件形态、以后读写地位等,并将这些信息保管到一个FILE类型的构造体变量中,然后将该变量的地址前往。
FILE是在stdio.h头文件中界说的一个构造体,用来保管文件信息。
假如愿望接纳 fopen() 的前往值,就需求界说一个 FILE 类型的指针。例如:
FILE*fp=("demo.txt","r");
表现以“只读”方法翻开以后目次下的 demo.txt 文件,并使 fp 指向该文件,如许就可以经过 fp 来操作 demo.txt 了。fp 平日被称为文件指针。又如:
FILE*fp=fopen("D:\\demo.txt","rb");
表现以二进制方法翻开 D 盘下的 demo.txt 文件,许可读和写。
翻开方法(mode)有多种,见下表:
文本文件和二进制文件的差别请检查:C言语fopen()翻开文本文件与二进制文件的差别
1) 文件翻开方法由r、w、a、t、b、+ 六个字符拼成,各字符的寄义是:
r(read):读
w(write):写
a(append):追加
t(text):文本文件,可省略不写
b(banary):二进制文件
+:读和写
2) 假如没有“b”字符,文件以文本方法翻开。
3) 凡用“r”翻开一个文件时,该文件必需曾经存在。
4) 在翻开一个文件时,假如失足,fopen将前往一个空指针值NULL。在程序中可以用这一信息来判别能否完成翻开文件的任务,并作响应的处置。因而常用以下程序段翻开文件:
if((fp=fopen("D:\\demo.txt","rb")==NULL){printf("ErroronopenD:\\demo.txtfile!");getch();exit(1);}
这段程序的意义是,假如前往的指针为空,表现不克不及翻开D盘根目次下的 demo.txt 文件,并给出提醒信息“error on open D:\\demo.txt file!”。第3行getch()的功用是从键盘输出一个字符,但不在屏幕上显示。在这里,该行的感化是等候,只要当用户从键盘敲任一键时,程序才持续履行,因而用户可应用这个等候工夫浏览失足提醒。敲键后履行exit(1)加入程序。
5) 把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方法写入磁盘时,也要把二进制码转换成ASCII码,因而文本文件的读写要破费较多的转换工夫。对二进制文件的读写不存在这种转换。
6) 规范输出文件 stdin(键盘)、规范输入文件 stdout(显示器)、规范毛病文件 stderr(显示器)是由零碎翻开的,可直接运用。
文件一旦运用终了,应当用fclose()函数把文件封闭,以释放相干资本,防止数据丧失。fclose() 的原型为:
intfclose(FILE*fp);
fp 为文件指针。例如:
fclose(fp);
文件正常封闭时,fclose() 的前往值为0,假如前往非零值则表现有毛病发作。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。