关于scanf输入字符的疑问

int a, b, i;
char  ch;
printf("输入结点个数!!");
scanf("%d", &a);
T->jiedian = a;
for (i = 0; i < a; i++)
{
    printf("a");
    scanf("%c",&ch);
    
    T->arr[i] = ch;
}

这个为什么输入节点数后回车后会输出两个a,是因为回车被第一次循环的scanf输入进去了吗
能说明下是什么问题导致的吗,怎么解决

scanf("%c",&ch); 这句改为:scanf(" %c",&ch); ,在%c前面敲一个空格

不理解你说的啥意思,发个你运行的截图看看

我已经大概了解到是因为scanf缓冲区的原因,还有疑问就是除了用清空缓冲区的办法外规避这个问题吗?