C语言使用scanf语句输入字符串,或者在循环中向字符数组中输入出现scanf语句执行有误

#include<stdio.h>
int main()
{
    char str[10];
    int i;
    for(i = 0; i < 3;i++)
    {
        scanf("%c",&str[i]);
    }
    return 0;
}

发现循环中本应输入3个数据,但是实际只能输入2个字符

原因:应用scanf语句输入时,回车键留在了缓冲区,下次输入时自动将缓冲区的回车键输入,实际输入为两个数据和一个回车

解决方法一:使用getchar语句


#include<stdio.h>
int main()
{
    char str[10];
    int i;
    for(i = 0; i < 3;i++)
    {
                str[i]=getchar();
    }
    return 0;
}

解决方法二:

在scanf语句前面或者后面加入 语句getchar();
清除缓冲区中的回车符