在C语言中,操作文件之前必须先打开文件;

<stdio.h> 头文件中的 fopen() 函数即可打开文件,它的用法为:

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

FILE 是 <stdio.h> 头文件中的一个结构体,它专门用来保存文件信息。

filename为文件名(或者文件路径),mode为打开方式,它们都是字符串。


怎样判断文件是否打开成功:

FILE *fp;if( (fp=fopen("data.txt","rb") == NULL ){printf("operation failed!\n");exit(0);  //退出程序(结束程序)}

打开文件出错时,fopen() 将返回一个空指针,也就是 NULL,我们可以利用这一点来判断文件是否打开成功


最基本的文件打开方式

打开方式说明
r以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。
w以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容,再创建一个新文件。
a以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾。
r+以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。
w+以“写入/更新”方式打开文件,相当于w和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容, 再创建一个新文件。
a+以“追加/更新”方式打开文件,相当于a和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾。
-----以上六种为读写权限字符串(必须声明);下面两种为读写方式字符串(默认为“t”),
b二进制文件。
t文本文件,如果不写,默认为"t"。

读写权限和读写方式组合使用的两种正确方式:

  1. 将读写方式放在读写权限的末尾,例如:“rb”
  2. 将读写方式放在读写权限的中间,例如:“rb+”

文件使用完毕应如何关闭

文件一旦使用完毕,应该用 fclose() 函数把文件关闭,以释放相关资源,避免数据丢失。

fclose(fp);

文件正常关闭时,fclose() 的返回值为0,如果返回非零值则表示有错误发生。


示例:

#include<stdio.h>#include<stdlib.h>int main() {//本段循环代码读取部分可省略不看,重点在打开与关闭
	FILE *fp;char ch;int count=0;if((fp=fopen("data.txt","r"))==NULL) { 
		printf("operation failed!\n");exit(0);}while((ch=fgetc(fp))!=EOF) { 		//循环读取文件的每一行数据if(ch=='#'||ch=='H'||ch=='T') {	
			count++;} else if(ch=='@') {
			count+=2;}}printf("%d",count);fclose(fp);   //关闭文件的正确方式return 0;}


小结:

  1. fopen:<stdio.h> 头文件中打开文件的函数。
  2. FILE: <stdio.h> 头文件中的一个结构体,它专门用来保存文件信息。
  3. fclose:<stdio.h> 头文件中关闭先前fopen()打开的文件的函数,此动作会让缓冲区内的数据写入文件中, 并释放系统所提供的文件资源。