FILE *fopen(char *filename, char *mode);
filename
为文件名(包括文件路径),mode
为打开方式,它们都是字符串。
FILE *fp = fopen("demo.txt", "r");表示以“只读”方式打开当前目录下的 demo.txt 文件,并使 fp 指向该文件,这样就可以通过 fp 来操作 demo.txt 了。fp 通常被称为文件指针。
FILE *fp = fopen("D:\\demo.txt","rb+");表示以二进制方式打开 D 盘下的 demo.txt 文件,允许读和写。
FILE *fp; if( (fp=fopen("D:\\demo.txt","rb")) == NULL ){ printf("Fail to open file!\n"); exit(0); //退出程序(结束程序) }我们通过判断 fopen() 的返回值是否和 NULL 相等来判断是否打开失败:如果 fopen() 的返回值为 NULL,那么 fp 的值也为 NULL,此时 if 的判断条件成立,表示文件打开失败。
控制读写权限的字符串(必须指明) | |
---|---|
打开方式 | 说明 |
"r" | 以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。 |
"w" | 以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。 |
"a" | 以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。 |
"r+" | 以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。 |
"w+" |
以“写入/更新”方式打开文件,相当于w 和r+ 叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。 |
"a+" | 以“追加/更新”方式打开文件,相当于a和r+叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。 |
控制读写方式的字符串(可以不写) | |
打开方式 | 说明 |
"t" |
文本文件。如果不写,默认为"t" 。 |
"b" | 二进制文件。 |
"t"
)。int fclose(FILE *fp);fp 为文件指针。例如:
fclose(fp);文件正常关闭时,fclose() 的返回值为0,如果返回非零值则表示有错误发生。
#include <stdio.h> #include <stdlib.h> #define N 100 int main() { FILE *fp; char str[N + 1]; //判断文件是否打开失败 if ( (fp = fopen("d:\\demo.txt", "rt")) == NULL ) { puts("Fail to open file!"); exit(0); } //循环读取文件的每一行数据 while( fgets(str, N, fp) != NULL ) { printf("%s", str); } //操作结束后关闭文件 fclose(fp); return 0; }读者只需要关心文件打开部分的代码,暂时不用关心文件读取部分的代码,后续我们会逐一讲解。
本文链接:http://task.lmcjl.com/news/8385.html