【STM32/C语言基础】请教一个关于getchar的小问题

这里通过ch=getchar();是得到单个字符对吗?
我发送12345,
为什么接受到的结果是

ch=1;
ch=2;

啊?
我觉得结果要么是

ch=1

要么是

ch=1;
ch=2;
ch=3;
ch=4;
ch=5;

才对啊

img


谢谢

/-------------------------------------------------------------------------------------/
补充一下问题,这下彻底懵了
听取评论的建议
我把%c之后的换行符删去之后,
输入5个数以内1234,会出来1和2
输入9个数以内12345678,会出来1和2和5
输入13个数以内123456789abc,会出来1和2和5和9
输入17个数以内123456789abcdef1,会出来1和2和5和9和d
再输入第17个数的话123456789abcdef12,就变成1和2和5和9和d和2
也就是说第1,2,5,9,13,17位被输出了,其他位不见了。

img

我再把%c之后的换行符加上(或者在%c后面加一个空格),
现在变成了第1,2,6,11,16位被输出了,其他位不见了。

img

以上情况LED灯都会按照输出的最后一个字符正常亮灭。
感觉我已经不指望能解决这个问题了,留给有兴趣的兄弟吧,感谢你们

因为接收到一个字符后,printf里面的换行被getchar获取到,所以第二次getchar的时候就没了

可能是串口缓冲区长度有限,后面的送过来的时候,你前面的还没读走,就丢了。