vscode编译c语言含有scanf函数exe文件会被自动删除
时间: 2025-03-07 20:07:42 浏览: 37
### VSCode 编译 C 语言 `scanf` 函数生成的 `.exe` 文件自动删除解决方案
在处理 Visual Studio Code (VSCode) 中编译 C 语言程序遇到的问题时,特别是涉及 `scanf` 函数以及生成的可执行文件 (`*.exe`) 被自动删除的情况,通常是因为配置不正确或某些默认行为所致。
#### 配置任务设置防止 .exe 文件被清理
为了确保生成的 `.exe` 文件不会被自动删除,在 VSCode 的项目根目录下创建或编辑现有的 `tasks.json` 文件。此文件用于定义构建任务的行为:
```json
{
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"],
"detail": "Generated by Debugger."
}
]
}
```
上述 JSON 片段展示了如何通过指定 `-o` 参数来命名输出文件,并将其保存在一个特定位置,而不是依赖于临时路径[^5]。
#### 修改 launch.json 设置保持终端打开
为了让程序结束后仍然保留命令行窗口以便查看输出结果,可以在项目的 `.vscode/launch.json` 文件中调整如下选项:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "externalTerminal", // 使用外部终端而非内置控制台
"internalConsoleOptions": "neverOpen",
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build hello world",
"postDebugTask": ""
}
]
}
```
这里的关键在于 `"console"` 字段设为 `"externalTerminal"` 和 `"internalConsoleOptions":"neverOpen"` ,这使得调试完成后不会立即关闭终端窗口。
#### 安全宏定义避免警告错误
对于使用 `scanf` 可能引发的安全性和兼容性问题,可以通过预处理器指令禁用安全警告:
```c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// ...其余代码...
```
这段代码片段应该放置在源文件顶部以确保其作用范围覆盖整个翻译单元[^2]。
通过以上措施,应当能够有效地解决 VSCode 下编译 C 程序过程中产生的 `.exe` 文件被意外清除的问题。
阅读全文
相关推荐


















