VS Code运行C语言程序无法生成并写入.txt文件问题求助
VS Code运行C语言程序无法生成/写入txt文件解决方法
核心原因
你编写的代码本身没有语法错误,写入失败90%以上的原因是相对路径对应的程序工作目录和你预期的源码目录不一致:fopen用相对路径时,会在程序运行时的*当前工作目录(CWD)*创建文件,而非源码存储的目录,没有报错是因为你没有对fopen的返回值做错误判断,文件打开失败后程序静默执行完成。
解决步骤
- 第一步:先确认代码逻辑无问题,添加错误判断逻辑,运行后即可看到具体失败原因
修改后的参考代码如下:
#include <stdio.h> #include <stdlib.h> int main() { FILE * fp; fp = fopen("employees.txt", "w"); // 新增错误校验逻辑 if (fp == NULL) { perror("文件操作失败"); // 直接输出具体错误原因,例如权限不足、路径不存在等 return 1; } fprintf(fp, "this was just created"); fclose(fp); return 0; }
你也可以直接找到编译后生成的exe可执行文件,手动双击运行,如果exe同级目录生成了对应的txt文件,即可确认是VS Code运行配置的工作目录问题。
第二步:修改VS Code运行时的工作目录配置
- 如果你使用Code Runner插件运行程序:打开VS Code设置,搜索
Code Runner: File Directory As Cwd,勾选该选项即可,后续运行程序会自动把源码所在目录设为工作目录,生成的txt会和源码在同一文件夹。 - 如果你使用launch.json配置调试运行:打开项目里的
.vscode/launch.json文件,找到cwd配置项,将值修改为${fileDirname}即可。
- 如果你使用Code Runner插件运行程序:打开VS Code设置,搜索
第三步(可选,无需改配置):直接使用绝对路径指定文件位置
如果不想修改配置,可以直接在fopen里写完整绝对路径,Windows系统下路径的反斜杠需要转义写2个,也可以直接用正斜杠,示例:fp = fopen("C:/Users/你的用户名/Desktop/employees.txt", "w");
运行后文件会直接生成在你指定的桌面路径。
内容的提问来源于stack exchange,提问作者Majid
相关产品推荐
相关产品推荐

