vscode 控制台无法输入问题,记录字符串数组中‘\0‘调试过程

本文分享了在VSCode环境下调试C语言程序的实践经验,特别是针对字符串输入与调试的难点,提供了详细的步骤与技巧,包括配置launch.json和使用codeRunner插件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚入坑 vscode,重新研究c语言,关于字符串 结束符 '\0’体验,想调试看看每个变量。发现无法调试。

总结:

现象:在不需要scanf 键盘输入时候,调试其他代码没有问题,编译也没有问题。

问题:在加入scanf 将字符串存入数组时候,无法输入。

解决办法:尝试了网上差不多7-8种办法,依然无法解决,最终发现问题出在了 调试过程上,不是配置问题。

#include <stdio.h>

int main(){
 
    char str1[5],str2[5],str3[5];
    printf("开始输入\n");
    scanf("%s%s%s",str1,str2,str3);
    printf("%s",str1);
    printf("%s",str2);
    printf("%s",str3);
    return 0;
}

两处修改位置

1、首先在 launch.json 中打开外部控制台 “externalConsole”: true,

2、设置里面 找到 Run In Terminal 勾选 插件库中 安装 code Runner插件

完成上面设置基本上 可以调试了 调试时候 跳出命令窗口 输出。

调试过程解决了问题,一开始没有加入

printf(“开始输入\n”);

导致 开始调试 执行后 不知道是否能输入,其实需要将

scanf("%s%s%s",str1,str2,str3);

执行后 才能输入。

调试过程

1、执行到printf(“开始输入\n”); 但未执行
在这里插入图片描述
2、执行这句结束 会有输出 ,下方光标箭头指向即将执行语句 scanf
但这个时候是无法键盘输入的。只有执行完 scanf 才能输入 输入时候注意输入法
在这里插入图片描述
3、执行scanf后 变量这边消失了,控制台可以输入,不能输入切换输入法英文
在这里插入图片描述
4、控制台内 输入完 ,回车 左边变量 发生改变,可以体会到 ‘\0’ 的储存方式
当数组长度 小于输入字符串长度 在字符串后一位自动加入’\0’ 至于再后一位 就是不确定了
在这里插入图片描述 5、最终 可以看到 输出时候 字符串数组中遇到’\0’ 结束输出,并且 不会输出’\0’
\0 是空字符串 不是空格
在这里插入图片描述

细节问题 多多注意!坑了一晚上

### 解决方案 为了使 C++ 程序在 VSCode 中能够正确显示中文输出,需要调整编译器编码设以及终端的字符集。具体方法如下: #### 编辑源代码以支持 UTF-8 输出 确保 `main` 函数前加入以下语句来设定控制台输出流使用的多字节字符集为 UTF-8[^1]: ```cpp #include <iostream> #include <locale> using namespace std; int main() { locale::global(locale("")); // 设全局区域为本地化环境 wstring_convert<codecvt_utf8<wchar_t>> converter; wcout << L"你好世界!" << endl; // 使用宽字符串输出中文 return 0; } ``` #### 修改 launch.json 配文件 打开 `.vscode/launch.json` 文件,在 `"configurations"` 数组内的对象中添加或修改下列属性以便于调试时能正常看到中文输出: ```json { "version": "0.2.0", "configurations": [ { ... "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "MIMode": "gdb", "miDebuggerPath": "/path/to/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing" }, { "text": "set charset utf-8", // 设定GDB内部使用的字符集为UTF-8 "ignoreFailures": true } ], ... } ] } ``` #### 更改 Windows 终端默认字体和支持更多语言 对于 Windows 用户来说,默认情况下命令提示符可能无法很好地渲染某些非 ASCII 字符串。可以通过更改 PowerShell 或者 CMD 的属性中的字体选项选择一种兼容性更好的字体比如 Lucida Console 或 Consolas。 另外还需要开启 Beta: Unicode 支持 (又称为 “启用新式控制台特性”) ,这一步骤可以在注册表编辑器里完成[HKEY_CURRENT_USER\Console\%SystemRoot_%System32_WindowsPowerShellv1. app]下创建名为 ForceV2 的DWORD值设其等于1;也可以通过管理员权限运行 powershell 执行下面这条指令实现: ```powershell Set-ItemProperty -Path HKCU:\Console -Name ForceV2 -Value 1 ``` 以上操作完成后重启计算机让改动生效即可解决大部分情况下的乱码问题[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十倍的快乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值