回 帖 发 新 帖 刷新版面

主题:回车键的困惑

大家好,我最近用C语言编程时想做人机交流显示,第一次输入一个int型数据,并让其显示出来;接着再让其输入一个char型数据并显示其输入的数据。但是现在当我输入int数据后按回车键执行的时候,程序竟然将回车键当做第二次输入的char型数据了,请问哪位大侠帮我解释一下如何解决这个问题。下面是源程序
    int a;
    char b;
    float c;
    char name[40];//定义一个含有40个字符的数组
    printf("please in put a int\n");
    scanf("%d",&a);//输入一个int型数据,并将其值赋给a
    printf("a=%d\n",a);//打印int数据
    printf("please in put a char\n");
    scanf("%c",&b);//输入一个char型数据,并将其赋给b
    printf("input is %c\n",b);//打印char型数据
    printf("please in put a float\n");
    scanf("%f",&c);//输入一个float型数据,并将其赋给c
    printf("c=%f\n",c);//打印float型数据
    printf("please in put a name\n");
    scanf("%s",name);//输入一个字符串,并将其赋给name
    printf("the name is %s\n",name);//打印字符串

回复列表 (共2个回复)

沙发

scanf的%c确实可以把空格和回车当作字符来读取。换用下面的写法可以解决问题,在读取字符之前,加上一句:scanf("%*[ \r\t\n]");
这句话的实际效果是:跳过接下来遇到的空格、回车、换行、制表符。

板凳


谢谢大侠

我来回复

您尚未登录,请登录后再回复。点此登录或注册