如何解决在调试控制台VScode中使用输入stdin
我尝试调试vs代码中的一些代码。一切正常,但是当我尝试在控制台中输入内容时,什么也没发生。
我的代码:
#include <stdio.h>
#define SIZE 20
int main()
{
char arr[SIZE];
fgets(arr,SIZE,stdin);
puts(arr);
return 0;
}
如您所见,我使用fgets()
从控制台读取字符串,但是当调试达到该功能时,所有内容都会停止,并且我无法输入任何内容。
只有黑色的窗户。
但是,当我使用gets()
时,例如以下示例:
#include <stdio.h>
#define SIZE 20
int main()
{
char arr[SIZE];
gets(arr);
puts(arr);
return 0;
}
一切正常。
问题出在哪里?也许调试控制台无法读取任何内容?如何使用fgets()
输入任何内容?
这是我的launch.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information,visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0","configurations": [
{
"name": "gcc.exe - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","externalConsole": true,"environment": [],"MIMode": "gdb","miDebuggerPath": "C:\\Users\\Svyatoslav\\gcc\\bin\\gdb.exe","setupCommands": [
{
"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true
}
],"preLaunchTask": "C/C++: gcc.exe build active file"
}
]
}
和tasks.json:
{
"tasks": [
{
"type": "cppbuild","label": "C/C++: gcc.exe build active file","command": "C:\\Users\\Svyatoslav\\gcc\\bin\\gcc.exe","args": [
"-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"
],"options": {
"cwd": "C:\\Users\\Svyatoslav\\gcc\\bin"
},"problemMatcher": [
"$gcc"
],"group": {
"kind": "build","isDefault": true
},"detail": "Generated task by Debugger"
}
],"version": "2.0.0"
}
解决方法
Okey,我已经找到了问题的答案。 解决方案是使用mingw-w64中的GCC编译器(gcc)和GDB调试器。
以下是对我有帮助的帖子:press me
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。