当前位置:C++技术网 > 资讯 > C语言文件操作详细分析:2 打开文件(fopen函数使用)

C语言文件操作详细分析:2 打开文件(fopen函数使用)

更新时间:2015-06-25 23:20:07浏览次数:1+次

此函数在头文件stdio.h中,用于打开一个文件。

FILE *fopen( const char *filename, const char *mode );

返回值:一个文件指针,如果发生错误,那么文件指针为NULL。通常要对文件指针进行检测,以确定文件是否成功打开。

代码如下:

FILE * pFile = fopen(...);
if(!pFile)
{
    printf("文件打开失败!");
    return false;
}

第一个参数
    是一个C类型字符串指针。因为文件名不会被修改,因此使用了const修饰。要正常打开文件,文件名必须不能为空,且要传入正确的文件名路径。如果直接传入文件名,如"1.txt",那么表示是打开和EXE同一个文件夹下的1.txt文件,如果要打开其他地方的,路径中的反斜杠要加多打一个,因为反斜杠是转义字符,像这样写,

代码如下:

fopen("D:\\file\\1.txt",...);
不能缺少多出的一个反斜杠,否则会出错。

第二个参数
打开方式:

"r":只读。文件不存在或者找不到文件,打开失败。
"w":只写。打开一个空文件去写。如果文件存在,内容将被销毁。
"a":追加(appending的首字母)。在追加新数据之前,不会移除文件尾EOF标志。如果文件不存在,则创建一个文件。文件追加也是在EOF之后,所以MS-DOS的命令只能显示原先的EOF之前的数据,相当于看不到新追加的数据。
"r+":读写一个已经存在的文件。
"w+":打开一个空文件来读写,如果文件已经存在,则内容会被销毁。
"a+":打开文件去读和追加。追加操作包含添加新数据前移除文件尾,和添加完后恢复文件尾。如果文件不存在,则创建一个文件。新添加的数据就是可以正常显示的数据。追加数据一定要用这个标志。

说明:
1."a"和"a+"不管什么情况,就算移动文件指针,还是在文件末尾添加数据,不会修改已经存在的数据。
2.只要模式中含有了加号,就表示可以读写。但是在读写中切换时,需要使用fflush, fsetpos, fseek, 或 rewind函数来操作指针。
3.文件读写的当前的位置可以通过fsetpos或fseek指定。
4.一般我们读写文件,选用带加号的方式操作.每一种方式打开,都对应一种类型的操作,操作完后,要关闭,再使用另一种方式打开。
5.操作文件完后,使用fclose(文件指针)来关闭。必须要关闭。


关于流和FILE结构体的深入理解,请阅读《C语言的文件操作深入分析之FILE结构体和文件操作机制
或者参考文章《C语言如何打开和关闭文件