首页 / 软件开发 / 数据结构与算法 / 提前认识软件开发(18) C语言中常用的文件操作函数总结及使用方法
提前认识软件开发(18) C语言中常用的文件操作函数总结及使用方法2015-01-24在C语言中,有关文件操作的函数多达数十种,但并非每个函数都经常会被用到。本文对实际软件开发项目中常用的C文件操作函数的用法进行了总结,并用实际的C代码来演示了它们的用法。1. C语言中常用的文件操作函数总结(1) fopen作用:打开文件。表头文件:#include <stdio.h>定义函数:FILE *fopen(const char *path, const char *mode);函数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字符串:r:打开只读文件,该文件必须存在。r+:打开可读写的文件,该文件必须存在。w:打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+:打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a:以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。a+:以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败,则返回NULL,并把错误代码存在errno中。附加说明:一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。(2) fclose作用:关闭文件表头文件:#include <stdio.h>定义函数:int fclose(FILE *stream);函数说明:fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。返回值:若关闭文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno中。错误代码:EBADF表示参数stream非已打开的文件。(3) fgetc作用:由文件中读取一个字符。表头文件:include <stdio.h>定义函数:int fgetc(FILE *stream);函数说明:fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。返回值:getc()会返回读取到的字符,若返回EOF则表示到了文件尾。(4) fgets作用:由文件中读取一字符串。表头文件:include<stdio.h>定义函数:char *fgets(char *s, int size, FILE *stream);函数说明:fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。返回值:fgets()若成功则返回s指针,返回NULL则表示有错误发生。(5) fflush作用:更新缓冲区。表头文件:#include <stdio.h>定义函数:int fflush(FILE *stream);函数说明:fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。如果参数stream为NULL,fflush()会将所有打开的文件数据更新。返回值:成功返回0,失败返回EOF,错误代码存于errno中。错误代码:EBADF参数stream指定的文件未被打开,或打开状态为只读。(6) fputc作用:将一指定字符写入文件流中。表头文件:#include <stdio.h>定义函数:int fputc(int c, FILE *stream);函数说明:fputc会将参数c转为unsigned char后写入参数stream指定的文件中。返回值:fputc()会返回写入成功的字符,即参数c。若返回EOF,则代表写入失败。