【函数所需头文件】:
头文件:#include
【函数声明】:
int fclose(FILE *stream);
【参数】:
stream为文件流指针。
【返回值】:
若关文件动作成功则返回0,有错误发生时则返回EOF,并把错误代码存到errno。
【函数描述】:
C 库函数 int fclose(FILE *stream) 关闭流 stream。刷新所有的缓冲区。
fclose()用来关闭fopen()打开的文件,此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。
【注意点】:
1、使用fopen()打开的文件,一定要记得使用fclose()关闭,否则会出现很多意想不到的情况,例如对文件的更改没有被记录到磁盘上,其他进程无法存取该文件等。
2、stream文件流介绍:
文件无非就是一段数据的集合,这些数据可以是有规则的集合,也可以是无序的集合。操作系统也就是以文件为单位对数据进行管理的。也就是说,要访问外部介质上的数据,必须先按照文件名进行查找,然后从该文件中读取数据。要想写数据到外部介质,必须得建立一个文件,然后再写入。因此,这样来看,你眼前的文件将是一堆一堆数据而已,也没有什么类型文件之分了,类型只是为了区分而已。
再来看二进制文件和ASCII文本文件:首先、文本文件方式存储多用于我们需要明显知道文件里面的内容时,比如ini、h、c等文件都是文本文件,这种文件存储的是字符(ASCII码),比如一个整数10000,类型是short,占2字节,存储文本形式将占用5个字节,一共5个字符。你可以想想更多的例子,体会文本文件方便之处(提示:这里的文本文件不是说是txt文件,而是指所有以文本格式存储的文件。);其次、二进制文件方式多用于直接将内存里面的数据形式原封不动存放到文件里,比如上面的short 10000,在内存中占2字节,存储内容为10000的二进制数,存到文件后还是占2字节,内容也是10000的二进制。这种方式可以整块数据一块儿存储,同时还可以将内存数据映射到文件里。
C语言就是使用上述两种方式进行操作文件的,文件可以是字节流或者二进制流。它把数据看成是一连串字符(字节),而不需要考虑边界。C语言对文件的存取是以字节为单位的。输入输出的数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制。这种文件通常称为流式文件,大大增加了灵活性。
在ANSI C标准中,使用的是“缓冲文件系统”。所谓缓冲文件系统指系统自动地在内存区为每一个正在使用的文件名开辟一个缓冲区,从内存向磁盘输出数据必须先送到内存中的缓冲区,装满后再一起送到磁盘去。反向也是如此。这里需要说明两个词:“输入”“输出”。输入表示从文件里读数据到程序里,输出表示从程序里写数据到文件中。
【举例】打开文件并关闭。
#include
int main(void)
{
FILE *pf;
pf = fopen("file.in", "w+"); /*打开文件*/
if(pf != NULL)
{
printf("open file ok\n");
}
else
{
printf("open file error\n");
}
fclose(pf);
return 0;
}
程序首先打开文件file.in,然后根据fopen函数的返回值判断是否打开成功并给出提示信息,再调用函数fclose()关闭文件。