宫道长 2021-09-27 18:18
浏览 46
已结题

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();
清除缓冲区中的回车符

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月5日
    • 创建了问题 9月27日