送蘑菇的小男孩 2024-03-08 13:46 采纳率: 50%
浏览 10

VS Code无法正常运行C语言

问题遇到的现象和发生背景

VS Code 使用C语言 不能正常运行和调试
VS code和MinGW都是最新版本的;
编译不报错,但是打印出来的值会异常
使用Scanf会卡死整个程序;
在终端:

img

在输出:

img

操作环境、软件版本等信息

VS code 1.8

尝试过的解决方法

安装了C/C++相关插件,但是无用,也

img

在Run code插件中已经勾选了Run in terminal

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-08 13:46
    关注

    引自免费微信小程序:皆我百晓生

    在VS Code中配置C语言环境并调试时遇到的问题,可能涉及多个方面。针对您描述的“编译不报错但打印出来的值异常”以及“使用Scanf会卡死整个程序”的情况,以下是几种可能的原因和相应的解决方案:

    1. 运行配置问题: 确保VS Code中的launch.json文件配置正确,用于调试C/C++程序的配置应包含正确的编译器路径、工作目录和命令行参数。一个基本的launch.json示例如下:
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "(gdb) Launch",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/your_program_name.exe", // 替换为你的可执行文件名
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true, // 如果希望在外部终端中运行,则设为true
                "MIMode": "gdb",
                "miDebuggerPath": "path/to/gdb.exe", // 替换为MinGW下的gdb路径
                "setupCommands": [
                    { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }
                ],
                "preLaunchTask": "build" // 确保预启动任务是构建任务,指向gcc/g++编译命令
            }
        ]
    }
    
    1. scanf问题: 当scanf函数导致程序卡住时,可能是由于输入格式与期望不符或者缓冲区未清空导致的。请检查scanf的调用是否正确,例如:
    int main() {
        int num;
        printf("请输入一个整数:");
        scanf("%d", &num); // 添加空格或回车处理,确保用户输入结束后能正常读取
        getchar(); // 有时需要额外添加getchar()来清除多余的换行符
        printf("你输入的数字是:%d\n", num);
        return 0;
    }
    
    1. 编译选项问题: 确保在tasks.json中设置的编译命令正确且包含了所有必要的头文件和库。例如:
    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "build",
                "type": "shell",
                "command": "gcc",
                "args": [
                    "-g", // 启用调试信息
                    "-o", "${fileDirname}/${fileBasenameNoExtension}.exe", // 输出文件名
                    "${file}", // 输入源文件
                    "-I", "path/to/includes", // 如果有自定义头文件路径,添加-I选项
                    "-L", "path/to/libs", // 如果有自定义库路径,添加-L选项
                    "-lmylib" // 如果链接特定库,添加-l选项
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "problemMatcher": ["$gcc"]
            }
        ]
    }
    
    1. 程序逻辑错误: 检查您的代码逻辑是否有误,比如数组越界、无限循环等可能导致程序行为异常的因素。

    2. 环境变量问题: 确认PATH环境变量已经包含了MinGW的bin目录,确保VS Code能够找到gcc/gdb等工具。

    如果以上步骤都已确认无误,请尝试重启VS Code,并重新编译和运行看看问题是否解决。同时,鉴于无法直接查看您提供的图片内容,若上述建议未能解决问题,请提供更详细的信息,如部分出问题的代码段、编译命令、输出的日志信息等,以便进行进一步排查。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题