刚刚入坑 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 是空字符串 不是空格
细节问题 多多注意!坑了一晚上