不能同时有两个scanf存在么
当输入第一个scanf值 回车,下面不需要再输入全部显示出来了,为什么????是不允许多个scanf存在吗?。#include <stdio.h>
#pragma warning(disable:4996)
int main()
{
double cm, kg, in, lb;
char name;
printf("请输入您的姓名:\n");
scanf("%c", &name);
printf("请输入您的身高(cm):\n");
scanf("%lf", &cm);
printf("请输入您的体重(KG):\n");
scanf("%lf", &lb);
printf("=============正在转换,请您等待===============\n");
in = cm / 30.48;
lb = cm / 0.45359237;
printf("%c的身高是:%.2lf(in),体重是%.2lf(lb)", name, in, lb);
}
本帖最后由 skyddy 于 2020-6-2 09:51 编辑
有缓冲区存在 当输入完毕 按回车时 会将回车留在缓冲区 下次读取时直接读取了缓冲区的内容 ,而未读取键盘输入
可以使用
while(getchar()!='\n')
continue;
// 在需要清除缓冲区的地方加入即可
//比如你第二次scanf()之前 和其他几处需要清理的位置 肯定是你输入错了。你的第一个scanf是读取一个字符,你是不是输入了多个字符?
那样的话,后面两个scanf会读取错误,给你的感觉好像是没有让你输入一样。
比如,abdc,第一个scanf读取a给name,然后缓冲区还有剩下的字符,程序继续执行,遇到第二个scanf,会继续冲缓冲区读取内容,但是读到的不是double,所以没有给cm赋值,第三个scanf也是如此。 sunrise085 发表于 2020-6-2 09:54
肯定是你输入错了。你的第一个scanf是读取一个字符,你是不是输入了多个字符?
那样的话,后面两个scanf会 ...
谢谢 我在想想如何允许输入多个字符 居家小男人≈ 发表于 2020-6-2 11:52
谢谢 我在想想如何允许输入多个字符
%s输入多个字符,遇到回车结束。
但是name需要定义为数组。 sunrise085 发表于 2020-6-2 12:36
%s输入多个字符,遇到回车结束。
但是name需要定义为数组。
您说的对!我已经做出来了。。非常感谢您的解答
页:
[1]