Ubuntu下VS Code运行C程序无法在终端/输出面板显示内容的求助
解决C程序读取文件内容不显示的问题
一、修复代码核心逻辑错误
你的代码中while循环的条件存在运算符优先级问题,这是无法正确读取文件内容的根本原因:
原代码里while(ch = fgetc(in) != EOF)会先执行fgetc(in) != EOF的比较操作,将结果(0或1,布尔值)赋值给ch,而非读取到的实际字符。这导致buff中存储的都是无效值,最终puts(buff)自然无法输出正确内容。
修复后的循环条件需要添加括号,确保先赋值再判断:
while((ch = fgetc(in)) != EOF) buff[i++] = ch;
完整修复后的代码:
#include<stdio.h> int main() { char buff[100]; FILE *in = fopen("my_file.txt", "r"); if(in == NULL) return 2; char ch; int i = 0; while((ch = fgetc(in)) != EOF) buff[i++] = ch; buff[i] = '\0'; puts(buff); fclose(in); return 0; }
二、检查VS Code运行配置与文件路径
确认文件位置
确保my_file.txt和编译生成的可执行文件在同一目录下。如果文件在其他路径,要么将文件移至可执行文件目录,要么在fopen中使用绝对路径(比如/home/your_username/project/my_file.txt)。配置VS Code工作目录
若使用VS Code的任务(tasks.json)编译运行,需确保工作目录指向C文件所在位置:
在tasks.json的配置项中添加"cwd": "${fileDirname}",示例如下:{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc build active file", "command": "/usr/bin/gcc", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" // 确保工作目录为当前文件所在目录 }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: /usr/bin/gcc" } ] }直接在终端运行可执行文件
编译完成后,手动在VS Code的TERMINAL面板中输入可执行文件路径运行(比如./your_program_name),验证是否能输出内容。如果手动运行正常,说明VS Code的运行配置需要调整;如果手动运行也无输出,再检查文件权限或文件内容是否正确。
内容的提问来源于stack exchange,提问作者Lexus RX
相关产品推荐
相关产品推荐

