在我刚开始学习c语言的时候就跳过了这一章节,但在后面慢慢发现这一章节还是比较重要的,如果你报考了计算机二级c语言的话,你应该可以看到后面的三个大题有时会涉及到这章。所以说这章还是非常重要的。
目录
前言
C 语言对文件有打开文件、读取和添加数据、插入和删除数据、关闭文件、删除文件等 操作。 与其他编程语言相比,C 语言文件操作的接口简单易学。在 C 语言中,为了统一对各种 硬件的操作,简化接口,不同的硬件设备也都被看成一个文件,其操作方法与普通文件的操 作方法类似。
废话不多说,直接开始正题。
一.打开文件
使用 头文件中的 fopen() 函数即可打开文件,它的用法为:
FILE *fopen(char *filename, char *mode);
filename 为文件名(包括文件路径),mode 为打开方式,它们都是字符串。
1.Fopen( )函数返回值
fopen 函数的返回值为 FILE 类型指针。如我们可以建立一个 FILE 型指针变量来存储 fopen 函数的返回值:
FILE *fp = fopen("aaa.txt","r");
上面语句作用为用只读的方式打开文件 aaa.txt 并用 fp 指向该文件,以后就可以直接通过 操作 fp 来操作文件,fp 也称文件指针。
如果文件打开失败,fopen( )函数的返回值为 NULL
2.文件打开方式
打开方式 | 说明 |
r | 只读方式打开文件,只能读文件的内容,不能写入,文件必须存在 |
w | 以写入方式打开文件,只允许写操作。文件不存在,则新建文件;若文件存在,则覆盖写入 |
a | 追加方式打开文件,在文件末尾写入数据。若文件不存在,则新建文件;若文件存在,则追加在文件末尾写入 (文件原内容保留) |
r+ | 读写方式打开文件,但文件必须存在,否则打开文件失败。 |
w+ | 相当于 w 和 r+两者叠加,既可读也可写。若文件存在,则清空文件内容写入;若不存在则创建新文件 |
a+ | 相当于 a 和 r+两者叠加,既可读也可写。若文件存在,则文件尾部追加写入(文件原内容保留);若不存在则创 建新文件。 |
t | 文本文件方式打开,若无 t 或 b 则默认为 t |
b | 二进制文件方式打开 |
注:fopen()函数在使用时必须指明权限,但是读写方式可省略(t,b) 读写权限和读写方式可以组合使用,一般权限放在前面,读写方式放在后面。
二.关闭文件
文件使用完毕,必须关闭文件,以避免出现数据错误和丢失。 C 语言中使用 fclose( )函数实现文件关闭操作,当文件成功关闭时函数返回值为 0,若返 回非 0 值,则说明文件关闭发生错误。 Fclose 函数的用法为:
int fclose(File *fp);
fp 为文件指针。
三.以字符形式读写文件
C 语言中读写文件很灵活,每次可以以字符形式读写一个字符,也可以读写一个字符 串,还可以随意字节读写,本节主要介绍以字符形式读写文件。
字符形式读写主要用到两个函数:fgetc( )和 fputc( );
1.Fgetc( )
fgetc 全称为 file get character,即从文件读取一个字符,函数定义形式为:
int fgetc(FILE *fp)
fp 为文件指针。函数返回值为 fgetc 获取到的字符,若读到文件末尾或没有读取成功则 返回 EOF(end of file)。EOF 是 stdio 定义的一个宏值,值为-1。fgetc 函数的返回值类型定义 为 int 而不是 char 就是要容纳这个 EOF。
char ch;
FILE *fp=fopen("a.txt","r+");
ch=fgetc(fp);
上述代码表示从 a.txt 文件读取一个字符,并赋值给变量 ch。 在文件内部有一个专门记录文件读写位置的指针,在 fopen 打开文件时,该指针指向第 一个字节。使用 fgetc 函数读取文件后,该指针向后移动一个字节,这样再次调用 fgetc 函数 就可以继续读取下一个字符了。
EOF 有可能是其他负数,不一定是-1,要看编译器的实现。
2.Fputc( )
fputc 全称为 file put character,即从文件写入一个字符,函数定义形式为:
int fputc(int ch,