题目
追加一行日志到文件末尾
思路
本题向文件末尾追加一行文本(日志场景)。
用追加模式打开文件(fopen(path, "a")),用 fprintf 写入一行文字并换行。打开失败时检查指针是否为 NULL。路径按题目给定或由输入读入,写完 fclose。
解题分析
追加写用 "a" 模式,不要覆盖原文件。fputs 不会自动补换行,若输入行无 \n 要自己写。
函数简要说明
向已有文件末尾追加一行,而不是覆盖原内容:
fopen(path, "a"):追加模式(append);文件不存在时会创建。不要用"w",否则会清空原文件。fprintf(fp, fmt, ...):按格式写入文件,用法类似printf,例如fprintf(fp, "%s\n", line)。fclose(fp):追加结束后关闭;部分环境在关闭前缓冲区才落盘。
完整程序
#include <stdio.h>
#include <string.h>
int main(void)
{
char line[512];
if (!fgets(line, sizeof line, stdin)) {
return 1;
}
FILE *fp = fopen("log.txt", "a");
if (!fp) {
return 1;
}
fputs(line, fp);
if (line[strlen(line) - 1] != '\n') {
fputc('\n', fp);
}
fclose(fp);
printf("appended\n");
return 0;
}