如何在C语言中创建以用户输入为文件名的txt文件?
C语言实现用户输入作为文件名创建.txt文件的方案
你最初的写法核心问题有两个:
fopen不支持直接解析格式化占位符,需要先将用户输入和.txt后缀拼接为完整的文件名字符串,再传入fopen- 打开模式
r为只读模式,仅能打开已存在的文件,要创建新文件需要使用写相关的模式
具体实现步骤
- 第一步:定义缓冲区存储用户输入的文件名前缀,以及拼接后的完整文件名
- 第二步:获取用户输入的文件名内容
- 第三步:使用
snprintf格式化拼接得到带.txt后缀的完整文件名,推荐优先使用snprintf,可以避免用户输入过长导致的缓冲区溢出风险 - 第四步:使用写模式调用
fopen创建文件,做好空指针判断处理异常 - 第五步:完成文件操作后关闭文件指针
可运行代码示例
#include <stdio.h> int main() { char inputName[100]; char fullFileName[110]; // 预留出.txt后缀的存储空间 // 读取用户输入的文件名 printf("请输入要创建的文件名(无需加后缀):"); scanf("%99s", inputName); // 限制输入长度避免溢出 // 拼接得到完整的.txt文件名 snprintf(fullFileName, sizeof(fullFileName), "%s.txt", inputName); // w模式:文件不存在则创建,存在则清空原有内容 FILE* fPointer = fopen(fullFileName, "w"); if (fPointer == NULL) { perror("文件创建失败"); return 1; } // 可在此处添加向文件写入内容的逻辑 fputs("文件创建成功的测试内容", fPointer); fclose(fPointer); printf("文件 %s 创建完成\n", fullFileName); return 0; }
常用打开模式说明
w:创建新文件写入,同名已有文件会被清空wx:创建新文件写入,同名文件已存在时直接返回创建失败,避免覆盖w+:创建新文件支持读写,同名已有文件会被清空
内容的提问来源于stack exchange,提问作者Hooopla
相关产品推荐
相关产品推荐

