scanf重定向到USART2,读入字符串或者数据时,总是丢失第一个字符.

2019-07-20 15:03发布

我重定向scanf函数,代码如下:
[mw_shl_code=applescript,true]int fgetc(FILE *f)
{
  uint8_t  ch;
  HAL_UART_Receive(&IUART,(uint8_t *)&ch, 1, 0xFFFF);
  return  ch;
}[/mw_shl_code]
只有在scanf("%c",..)时,可以正常读入输出.
如果scanf("%s",..)或者scanf("%d",...)总是丢失第一个字符.试验如下:
lost.png
h.png
  • 如果scanf("%s",..)我输入abc回车,printf只输出bc
  • 如果我scanf("%d",..)我输入123回车,printf只会输出23.
  • 如果我scanf("%c",..),我输入a不用回车,就会输出a.

这是什么原因呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。