在信息学奥赛 CSP-S 的备考过程中,文件操作是一个重要的知识点。特别是在冲刺阶段的第 1 周,掌握文件读写函数的使用方法,对于提高编程能力和解决实际问题具有重要意义。本文将重点讲解字符级与字符串级文件读写函数的使用方法,并通过机器人传感器数据实时写入文件的实例,演示如何处理文件读写过程中的错误及文件结束标志的判断方法。
一、文件读写函数概述
文件读写函数主要包括字符级和字符串级两大类。字符级函数主要有 fgetc 和 fputc,字符串级函数主要有 fgets 和 fputs。
1.1 字符级文件读写函数
- fgetc:从指定的文件流中读取一个字符。
- fputc:将一个字符写入指定的文件流。
1.2 字符串级文件读写函数
- fgets:从指定的文件流中读取一行字符串。
- fputs:将一个字符串写入指定的文件流。
二、文件读写函数的使用方法
2.1 fgetc 和 fputc 的使用
#include <stdio.h>
int main() {
FILE *fp = fopen("data.txt", "w");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
char ch = 'A';
while (ch <= 'Z') {
fputc(ch, fp);
ch++;
}
fclose(fp);
return 0;
}
2.2 fgets 和 fputs 的使用
#include <stdio.h>
int main() {
FILE *fp = fopen("data.txt", "w");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
char str[] = "Hello, World!";
fputs(str, fp);
fclose(fp);
return 0;
}
三、机器人传感器数据实时写入文件实例
在实际应用中,机器人传感器数据的实时写入文件是一个常见的需求。以下是一个示例代码,演示如何将时间戳及对应数据写入文件,并处理文件读写过程中的错误及文件结束标志。
#include <stdio.h>
#include <time.h>
int main() {
FILE *fp = fopen("sensor_data.txt", "w");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
for (int i = 0; i < 10; i++) {
time_t now = time(NULL);
char timestamp[20];
strftime(timestamp, sizeof(timestamp), "%Y-%m-%d %H:%M:%S", localtime(&now));
float sensor_data = (float)rand() / RAND_MAX * 100; // 模拟传感器数据
fprintf(fp, "%s, %.2f
", timestamp, sensor_data);
if (ferror(fp)) {
perror("Error writing to file");
fclose(fp);
return 1;
}
}
fclose(fp);
return 0;
}
四、错误处理及文件结束标志的判断
在文件读写过程中,错误处理和文件结束标志的判断是非常重要的。可以使用 ferror 函数检查是否发生了错误,使用 feof 函数检查是否到达文件末尾。
if (ferror(fp)) {
perror("Error writing to file");
fclose(fp);
return 1;
}
if (feof(fp)) {
printf("End of file reached.
");
}
总结
通过本文的学习,我们掌握了字符级和字符串级文件读写函数的使用方法,并通过机器人传感器数据实时写入文件的实例,演示了如何处理文件读写过程中的错误及文件结束标志的判断方法。希望大家能够在备考过程中不断练习,熟练掌握文件操作的相关知识,为 CSP-S 考试做好充分准备。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!




