文件读写
一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。
文件的打开
在C语言中我们可以使用**fopen( )
**函数来打开一个文件或者创建一个新的文件,其调用的一般格式为:
文件指针名 = fopen(文件名,文件的使用方式)
其中,“文件指针名”就是前面声明的文件指针变量;“文件名”是被打开的文件的名称;“文件的使用方式”是指文件的类型和操作要求。
例如:
FILE *fp;
fp=fopen("dzx","r");
其含义是在当前目录下打开文件名为dzx的文件,并只允许进行读操作,病逝文件指针变量指向该文件。可见,打开一个文件时,通知给编译系统以下的3个信息:需要打开的文件、文件的使用方式、让哪个指针变量指向被打开的文件。文件的使用方式和含义如下表:
模式 | 描述 |
---|---|
r | 打开一个已有的文本文件,允许读取文件。 |
w | 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 |
a | 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 |
r+ | 打开一个文本文件,允许读写文件。 |
w+ | 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 |
a+ | 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 |
处理的是二进制文件:
读写权限和读写方式可以组合使用,但是必须将读写方式放在读写权限的中间或者尾部(换句话说,不能将读写方式放在读写权限的开头)。例如:
- 将读写方式放在读写权限的末尾:“rb”、“wt”、“ab”、“r+b”、“w+t”、“a+t”
- 将读写方式放在读写权限的中间:“rb+”、“wt+”、“ab+”
文件的关闭
C语言用fclose( )
函数打开一个文件,其调用的一般格式为:
fclose(文件指针);
例如:
fclose(fp);
关闭文件,即fp不再指向该文件。
若关闭文件成功,函数返回值为0;否则返回值非零。
字符读写函数fgetc()和fputc()
读字符函数fgetc()
fgetc()
函数的功能是从指定的文件中读取一个字符。函数调用的一般格式为:
字符变量=fgetc(文件指针)
例如:
ch=fgetc(fp);
其中,fp为文件型指针变量,ch是字符变量,表示fgetc()
函数将从fp所指向的文件中读取一个字符并赋值给字符变量ch。如果在执行fgetc()
函数时遇到文件结束符,函数返回一个文件结束符标志EOF(-1)
。
写字符函数fputc()
fputc( )
函数的功能是从指定的文件中读取一个字符。函数调用的一般格式为:
fputc( 字符,文件指针 );
其中,“字符”可以是字符变量或字符变量
例如:
ch=fgetc('a',fp);
其中,fp为文件型指针变量,'a'
是字符变量,表示fputc()
函数将字符'a'
写入到fp所指向的文件中。如果在执行fputc()
函数成功将返回写入的字符,否则函数将返回EOF(-1)
。