C言语文件的翻开与封闭

发布时间:2020-07-16 22:05:17 作者:yuw2016
来源:网络 阅读:270

在C言语中,文件操作多是由库函数来完成的,这节引见文件的翻开和封闭。

文件的翻开(fopen函数)

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)有多种,见下表:

翻开方法阐明
r以只读方法翻开文件,只许可读取,不许可写入。该文件必需存在。
r+以读/写方法翻开文件,许可读取和写入。该文件必需存在。
rb+以读/写方法翻开一个二进制文件,许可读/写数据。
rt+以读/写方法翻开一个文本文件,许可读和写。
w以只写方法翻开文件,若文件存在则长度清为0,即该文件内容消逝,若不存在则创立该文件。
w+以读/写方法翻开文件,若文件存在则文件长度清为零,即该文件内容会消逝。若文件不存在则树立该文件。
a以追加的方法翻开只写文件。若文件不存在,则会树立该文件,假如文件存在,写入的数据会被加到文件尾,即文件本来的内容会被保存(EOF符保存)。
a+以追加方法翻开可读/写的文件。若文件不存在,则会树立该文件,假如文件存在,则写入的数据会被加到文件尾后,即文件本来的内容会被保存(本来的EOF符 不保存)。
wb以只写方法翻开或新建一个二进制文件,只许可写数据。
wb+以读/写方法翻开或树立一个二进制文件,许可读和写。
wt+以读/写方法翻开或树立一个文本文件,许可读写。
at+以读/写方法翻开一个文本文件,许可读或在文本末追加数据。
ab+以读/写方法翻开一个二进制文件,许可读或在文件末追加数据。


文本文件和二进制文件的差别请检查:C言语fopen()翻开文本文件与二进制文件的差别

几点阐明

1) 文件翻开方法由r、w、a、t、b、+ 六个字符拼成,各字符的寄义是:


2) 假如没有“b”字符,文件以文本方法翻开。
3) 凡用“r”翻开一个文件时,该文件必需曾经存在。
4) 在翻开一个文件时,假如失足,fopen将前往一个空指针值NULL。在程序中可以用这一信息来判别能否完成翻开文件的任务,并作响应的处置。因而常用以下程序段翻开文件:

			if( (fp=fopen("D:\\demo.txt","rb") == NULL ){ printf("Error on open D:\\demo.txt file!"); 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()函数把文件封闭,以释放相干资本,防止数据丧失。fclose() 的原型为:

int fclose(FILE *fp);

fp 为文件指针。例如:

fclose(fp);

文件正常封闭时,fclose() 的前往值为0,假如前往非零值则表现有毛病发作。


推荐阅读:
  1. 朴素的UNIX之-翻开历史
  2. C言语指针的复杂示例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

字符串 二进制 信息

上一篇:安装hadoop集群(Multi Cluster)

下一篇:oracle 启动阶段

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》