当前位置:C++技术网 > 资讯 > C语言如何打开和关闭文件

C语言如何打开和关闭文件

更新时间:2015-06-24 21:05:14浏览次数:1+次

    C语言打开文件和关闭文件,需要使用文件操作函数fopen和fclose。以f开头表示的函数代表文件操作,所以看到其他的f开头的函数,也可以推断为文件操作的相关函数。比如fread。
    一、打开文件
    fopen的函数原型:

FILE *fopen(const char *filename,const char *mode)
     fopen实现了三个功能:打开一个流,把一个文件和此流相连接,给此流返回一个FILE指针。
    关于流和FILE结构体的深入理解,请阅读《C语言的文件操作深入分析之FILE结构体和文件操作机制》


    1.参数filename指向要打开的文件名
    2.mode表示打开状态的字符串,其取值如下:

"r" :以只读方式打开文件,清空文件内容。
"w" :以只写方式打开文件,清空文件内容。
"a" :以追加方式打开文件。在打开的文件内容的尾部继续写入数据,而不会将原来的文件数据清空。
"r+" :以读/写方式打开文件,如无文件出错,清空文件内容。
"w+" :以读/写方式打开文件,清空文件内容。如无文件生成新文件。


一个文件可以以“文本模式”或“二进制模式”打开。
    这两种的区别是:
    在文本模式中回车被当成一个字符’n’,而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的处理,将处理后的结果作为要显示的结果返回给程序。
    而二进制则是原始的数据,写入的是什么数据就存入什么数据,不进行任何转换。
    系统默认以文本模式打开,可修改全部变量_fmode的值来更改这个设置,如_fmode = O_TEXT;就设置默认打开方式为文本模式;而_fmode = O_BINARY;则设置默认打开方式是二进制模式。
我们也可以在fopen的第二个参数模式字符串中指定打开的模式,如"rb"表示以二进制模式打开只读文件,"w+t"或"wt+"表示以文本模式打开读/写文件。其他依次类推。
此函数返回一个FILE指针,所以申明一个FILE指针后可以不用初始化,使用fopen()来返回一个指针并与一个特定的文件相连,如果失败,返回NULL,成功则返回有效的指针。

    打开文件的代码示例:

FILE *fp = NULL; 
if(fp=fopen("test.txt","w+")) 
{
    // - 打开文件成功
}
else 
{
    // - 打开文件失败
}


    二、关闭文件

    fclose函数原型:

int fclose(FILE *fp);
     fclose()的功能就是关闭用fopen()打开的文件。
    如果成功,返回0,失败返回EOF。
    在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况。
    关闭文件代码示例:
fclose(fp);// - fp为使用fopen打开的文件指针