You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向现有文件追加日期?代码无法追加至krishna.txt的问题咨询

代码无法追加内容的原因及修复方案

核心问题

  • if语句语法错误:原代码里if(fp==NULL)没加{},导致只有printf("File not exist");属于if分支,exit(1);会无条件执行——程序刚打开文件就直接退出,根本没机会执行写入操作。
  • gets函数的隐患:gets()不限制输入长度,输入超过str数组的20个字符会触发缓冲区溢出,不仅可能导致程序崩溃,还存在安全风险。

修复后的完整代码(包含追加日期功能)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
    FILE *fp;
    char str[50];
    time_t now;
    char *date_str;

    // 以追加模式打开文件,不存在则自动创建
    fp = fopen("krishna.txt", "a");
    if(fp == NULL){
        printf("无法打开文件\n");
        exit(1);
    }

    // 获取并写入当前日期时间
    time(&now);
    date_str = ctime(&now);
    fputs(date_str, fp);

    printf("输入要追加的内容:");
    fgets(str, sizeof(str), stdin);
    fputs(str, fp);

    printf("内容已成功追加\n");
    fclose(fp);
    return 0;
}

关键修改说明

  • 给if分支加上{},保证错误处理逻辑只在文件打开失败时执行。
  • 把void main()改成标准的int main()并返回0,符合C语言规范。
  • 用fgets()替代gets(),安全限制输入长度,避免缓冲区溢出。
  • 引入time.h,通过time()和ctime()获取当前日期时间,直接追加到文件中,满足你追加日期的需求。
  • 扩大字符数组到50位,避免输入内容过长导致溢出。

内容的提问来源于stack exchange,提问作者COMMERCE Kv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:40:40