C语言的fopen()函数
2017-06-12 21:11
302 查看
C语言的fopen()函数
图片来源-百度图片
fopen()的声明在头文件:
#include <stdio.h>
fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:
FILE * fopen(const char * path, const char * mode);
【参数】path为包含了路径的文件名,mode为文件打开方式(模式)。
表1 fopen()的模式字符串
打开方式 | 说明 |
---|---|
“r” | 以读模式打开文件 |
“w” | 以写模式打开,把现有文件的长度截为0,如果文件不存在,则创建一个新文件 |
“a” | 以写模式打开文件,在现有文件末尾添加内容,如果文件不存在,则创建一个新文件 |
“r+” | 以更新模式打开文件,允许读和写。 |
“w+” | 以更新模式打开文件,允许读和写。如果文件存在则将其长度截为0;如果文件不存在,则创建一个新文件。 |
“a+” | 以更新模式打开文件,允许读和写,在现有文件的末尾添加内容,如果文件不存在则创建一个新文件;可以读整个文件,但是只能从末尾添加内容 |
“rb”, “wb”, “ab”, ab+”, “a+b”, “wb+”, “w+b”, “ab+”, “a+b” | 与上一个模式类似,但是以二进制模式而不是文本莫斯打开文件 |
“wx”, “wbx”, “w+x”, “wb+x”或”w+bx” | (C11)类似非x模式,但是是如果文件已存在或以独占模式打开文件时,则打开文件失败。 |
特别注意,如果使用人也一种”w”模式(不带x字母)打开一个现有文件,该文件的内容会被删除,以便程序在一个空白文件中操作。然而,如果使用带x字母的任何一种模式,将无法打开一个现有的文件。
示例:
/* count.c -- using standard I/O */ #include <stdio.h> #include <stdlib.h> // exit() prototype int main(int argc, char *argv[]) { int ch; // place to store each character as read FILE *fp; // "file pointer" unsigned long count = 0; if (argc != 2) { printf("Usage: %s filename\n", argv[0]); exit(EXIT_FAILURE); } if ((fp = fopen(argv[1], "r")) == NULL) { printf("Can't open %s\n", argv[1]); exit(EXIT_FAILURE); } while ((ch = getc(fp)) != EOF) { putc(ch,stdout); // same as putchar(ch); count++; } fclose(fp); printf("File %s has %lu characters\n", argv[1], count); return 0; }
该程序使用fopen()函数打开文件。程序成功打开文件后,fopen()将返回文件指针,其他I/O函数可以使用这个指针指定该文件。文件指针的类型指向FILE的指针,FILE是一个定义在stdio.h中的派生类型。文件指针fp并不指向实际的文件,它指向一个包含文件信息的数据对象,其中包含操作文件IO函数所用的缓冲区信息。因为标准库中的IO函数使用缓冲区,所以它们不仅要知道缓冲区的位置,还要知道缓冲区被填充的程度以及操作哪一个文件。标准IO函数根据这些信息在必要时决定再次填充或清空缓冲区。fp指向的数据对象包含了这些信息(该数据对象是一个C结构)。
参考资料:
[1] 史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.
相关文章推荐
- [小结]C语言的文件操作函数fopen,fread,fwrite注意点
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- linux c语言之文件操作相关函数--fopen(),fopen_s(),fread(),fwrite(),fclose(),
- C语言:文件函数 fopen(),fclose(),fwrite(),fread()
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- Linux下用C语言fopen、fread和fwrite函数对二进制文件的操作
- 详解C语言中的fopen()函数和fdopen()函数
- C语言文件操作函数——fopen和freopen的区别
- C语言中fopen函数用法详解
- C语言-一个fopen函数中未使用二进制模式(b)引发的血案
- C语言几个文件操作函数fopen(),fseek(),fscanf(),fwrite()
- [C语言]fopen()函数的参数说明
- c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数
- 详解C语言中的fopen()函数和fdopen()函数
- fgetc()/fputc()/fgets()/fputs()/fread()/fwrite()/fopen()/fclose() 等C语言文件操作函数
- C语言学习10:结构体,结构体应用,联合用法,枚举,fopen函数使用,fseek,ftell的作用和文件结束符EOF,数组和文件交换数据,个人信息管理。
- C语言fopen()函数:打开一个文件并返回文件指针
- Fopen 函数 C语言 (网上摘抄)(方便查询)
- 水滴石穿C语言之指针、数组和函数(转载)
- 用C语言实现参数个数可变的函数