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

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日

    悬赏问题

    • ¥15 ansys fluent计算闪退
    • ¥15 有关wireshark抓包的问题
    • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
    • ¥15 向数据表用newid方式插入GUID问题
    • ¥15 multisim电路设计
    • ¥20 用keil,写代码解决两个问题,用库函数
    • ¥50 ID中开关量采样信号通道、以及程序流程的设计
    • ¥15 U-Mamba/nnunetv2固定随机数种子
    • ¥15 vba使用jmail发送邮件正文里面怎么加图片
    • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。