1. 文件读写概述
文件读写是计算机程序处理数据的基本操作之一。相比于将数据保存在内存中,将数据保存在文件中可以实现数据的长期保存和共享,而且读写文件的方式不会受到程序运行周期的影响。在 C 语言中,文件读写操作主要由标准 IO 库提供支持。
标准 IO 库提供了多种用于文件读写的函数,如 fopen、fread、fwrite、fclose 等函数,可以实现文件的打开、读写、关闭等操作。
2. 文件打开
在使用文件读写函数操作文件之前,我们需要先将文件打开。在 C 语言中,使用 fopen 函数可以打开文件。
FILE *fopen(const char *filename, const char *mode);
其中,filename 参数为需要打开的文件名,mode 参数为文件打开模式。
2.1 文件打开模式
文件打开模式指定了文件的打开方式,如是只读、只写、追加等。下面是 fopen 函数支持的若干文件打开模式:
"r":只读方式打开文件。该文件必须事先存在,否则 fopen 函数将返回 NULL。
"w":只写方式打开文件。如果该文件存在,其内容将被清空;如果该文件不存在,则创建该文件。
"a":以追加方式打开文件。如果该文件不存在,则创建该文件;如果该文件已经存在,则将新数据追加到文件末尾。
"rb":以二进制只读方式打开文件。
更多文件打开模式可以查看官方文档。
2.2 文件打开示例
下面是以只读方式打开文件的示例代码:
#include<stdio.h>
int main() {
FILE *fp;
fp = fopen("example.txt", "r");
if(fp == NULL) {
printf("Failed to open the file.");
}
fclose(fp);
return 0;
}
该程序采用只读方式打开 example.txt 文件,并在程序末尾使用 fclose 函数关闭文件。
3. 文件读写
3.1 文件读取
fread 函数用于从文件中读取数据。下面是该函数的原型:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
该函数从 stream 文件中读取 count 个元素,每个元素大小为 size,将它们存储在内存中以 ptr 指向的位置。函数返回实际读取元素个数。
3.2 文件写入
fwrite 函数用于向文件中写入数据。下面是该函数的原型:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
该函数将 ptr 所指向的数据写入 stream 文件,其中每个元素大小为 size,写入元素个数为 count,函数返回实际写入元素个数。
4. 文件关闭
使用文件读写函数完毕后,需要使用 fclose 函数关闭文件。
int fclose(FILE *stream);
4.1 文件关闭示例
下面是读取 example.txt 文件内容并打印的示例代码:
#include<stdio.h>
int main() {
FILE *fp;
char str[100];
fp = fopen("example.txt", "r");
if(fp == NULL) {
printf("Failed to open the file.");
return -1;
}
fread(str, 1, 100, fp);
printf("%s", str);
fclose(fp);
return 0;
}
该程序打开 example.txt 文件并读取其中的内容,最后使用 fclose 函数关闭文件。
5. 总结
文件读写是 C 语言中常用的操作之一,标准 IO 库提供了多种用于文件读写的函数。文件读写的操作步骤包括文件打开、读写、关闭等过程。需要注意的是,在读写文件的过程中,需要进行错误处理,以防止程序出错。