题目

追加一行日志到文件末尾

思路

本题向文件末尾追加一行文本(日志场景)。

用追加模式打开文件(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;
}