在C语言中,文件操作是一个重要的功能,它允许程序读取和写入外部的数据文件。通过文件操作,我们可以将程序的数据持久化保存,或者在程序运行时读取外部的数据。
一、文件打开
在C语言中,我们使用fopen
函数来打开文件。该函数的原型如下:
FILE *fopen(const char *filename, const char *mode);
参数:
filename
:要打开的文件名(包括路径)。mode
:打开文件的模式,例如"r"
代表只读,"w"
代表写入(如果文件不存在则创建,如果文件存在则清空内容),"a"
代表追加(如果文件不存在则创建,如果文件存在则在文件末尾追加内容),"r+"
代表读写等。
返回值:
- 如果成功打开文件,返回指向
FILE
的指针。 - 如果打开文件失败,返回
NULL
。
示例代码:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
// ... 在这里进行文件写入操作 ...
fclose(file); // 记得最后关闭文件
return 0;
}
二、文件写入
使用fprintf
函数可以将数据写入到文件中。该函数的原型如下:
int fprintf(FILE *stream, const char *format, ...);
参数:
stream
:文件指针,指向要写入数据的文件。format
:格式字符串,用于指定输出数据的格式。...
:与格式字符串中指定的格式对应的参数列表。
返回值:
- 成功写入的字符数(不包括结尾的空字符)。
- 如果发生错误,返回负值。
示例代码:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
fprintf(file, "Hello, World!\n");
fclose(file);
return 0;
}
三、文件读取
使用fscanf
函数可以从文件中读取数据。该函数的原型如下:
int fscanf(FILE *stream, const char *format, ...);
参数:
stream
:文件指针,指向要读取数据的文件。format
:格式字符串,用于指定读取数据的格式。...
:与格式字符串中指定的格式对应的变量列表,用于存储读取到的数据。
返回值:
- 成功读取并赋值的参数个数。
- 如果在读取之前已到达文件末尾或发生错误,返回
EOF
。
示例代码:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
char buffer[100];
if (fscanf(file, "%99s", buffer) == 1) {
printf("Read from file: %s\n", buffer);
} else {
perror("Error reading from file");
}
fclose(file);
return 0;
}
四、文件关闭
使用fclose
函数关闭已打开的文件。该函数的原型如下:
int fclose(FILE *stream);
参数:
stream
:要关闭的文件的指针。
返回值:
- 如果成功关闭文件,返回
0
。 - 如果发生错误,返回
EOF
。
示例代码:
FILE *file = fopen("example.txt", "r");
// ... 进行文件操作 ...
fclose(file); // 关闭文件
请注意,在实际编程中,文件操作可能会遇到各种错误,例如文件不存在、磁盘空间不足等。因此,在进行文件操作时,应该总是检查返回值,并适当处理错误情况。同时,在完成文件操作后,务必使用fclose
函数关闭文件,以释放系统资源。