如何向现有文件追加日期?代码无法追加至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
相关产品推荐
相关产品推荐

