10.1 文件操作基础
1. 文件的打开和关闭
使用 fopen
函数打开文件,使用 fclose
函数关闭文件。
打开文件的模式:
"r"
:只读模式"w"
:写入模式(会清空文件内容)"a"
:追加模式(写入内容将追加到文件末尾)"r+"
:读写模式"w+"
:读写模式(会清空文件内容)"a+"
:读写模式(写入内容将追加到文件末尾)
示例:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w"); // 打开文件进行写入
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
fprintf(file, "Hello, World!\n"); // 写入数据到文件
fclose(file); // 关闭文件
return 0;
}
10.2 文件读写操作
1. 写入文件
使用 fprintf
、fputs
、fwrite
等函数将数据写入文件。
示例:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
fprintf(file, "Writing to a file using fprintf.\n");
fputs("Writing to a file using fputs.\n", file);
fclose(file);
return 0;
}
2. 读取文件
使用 fscanf
、fgets
、fread
等函数从文件读取数据。
示例:
#include <stdio.h>
int main() {
char buffer[100];
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer); // 读取并打印每行内容
}
fclose(file);
return 0;
}
10.3 文件指针操作
1. 移动文件指针
使用 fseek
、ftell
和 rewind
来控制文件指针的位置。
示例:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
fseek(file, 0, SEEK_END); // 移动到文件末尾
long fileSize = ftell(file); // 获取文件大小
rewind(file); // 将文件指针重置到文件开头
printf("File size: %ld bytes\n", fileSize);
fclose(file);
return 0;
}
10.4 二进制文件操作
1. 写入和读取二进制文件
使用 fwrite
和 fread
处理二进制数据。
示例:
#include <stdio.h>
int main() {
FILE *file = fopen("example.bin", "wb");
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
int numbers[] = {1, 2, 3, 4, 5};
fwrite(numbers, sizeof(int), 5, file); // 写入二进制数据
fclose(file);
file = fopen("example.bin", "rb");
if (file == NULL) {
printf("Error opening file!\n");
return 1;
}
int readNumbers[5];
fread(readNumbers, sizeof(int), 5, file); // 读取二进制数据
for (int i = 0; i < 5; i++) {
printf("%d ", readNumbers[i]); // 打印读取的数据
}
printf("\n");
fclose(file);
return 0;
}
10.5 错误处理
1. 错误检查
在文件操作中,检查文件是否成功打开,处理文件操作中的错误。
示例:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Error opening file"); // 打印错误信息
return 1;
}
// 文件操作代码...
if (fclose(file) != 0) {
perror("Error closing file"); // 打印关闭文件时的错误信息
return 1;
}
return 0;
}
练习
- 编写一个程序,创建一个文本文件并写入用户输入的多行文本,然后读取并打印文件内容。
- 编写一个程序,创建一个二进制文件并写入一组浮点数,随后读取这些浮点数并计算它们的平均值。
- 编写一个程序,使用文件操作保存一个结构体数组(如学生信息),然后读取并打印这些信息。
- 编写一个程序,统计一个文本文件中字符、单词和行的数量,并将结果保存到另一个文件中。
完成这些练习后,你将掌握C语言的文件操作。