scanf和getchar区别

发布网友 发布时间:2024-12-17 12:42

我来回答

5个回答

热心网友 时间:1天前

这里的两个getchar其实为了清除键盘缓冲区中的回车符用的
清除键盘缓冲区中的回车符的目的是防止下一次scanf时,将键盘缓冲区内的回车当作本次用户输入数据给错误地读入

这么看:
loop: printf("Enter month in 2007 to display calender:");
scanf("%d",&a);//读取a值,由于最后那个getchar已经将用户输入b值后敲的那个回车清除,所以loop循环到这里后,可以直接读取用户输入的a值
...
getchar(); //这里的getchar用以清除scanf("%d",&a);输入时,用户输入a值后敲的那个回车
pip: printf("\n Would you like to display another month?(y/n)\n");
scanf("%c",&b);//读取b值,由于上面那个getchar已经将用户输入a值后敲的那个回车清除,所以运行到这里后,可以直接读取用户输入的b值
getchar(); //这里的getchar用以清除scanf("%c",&b);输入时,用户输入b值后敲的那个回车

再来回答你的问题:
简单点说就是一旦我输入了“y”和“回车”,那么是怎么分配给scanf和getchar的,是不是“回车”给了第一个getchar,“y”给了第二个?那么中间的scanf又是干什么的?

一旦输入了“y”和“回车”,那么scanf读取'y'作为b值,"回车"被getchar吸收

热心网友 时间:1天前

getchar()
没有scanf
那样多元化
scanf
可以接收不同形势的输入,数字,字符,字符串等
还有getchar()还可以接受回车
换行等字符。

热心网友 时间:1天前

当读入一个字符时,效果一样.getchar()是只读入一个字符,scanf则灵活的多

热心网友 时间:1天前

一、s=getchar(
);不能改成scanf("%c",s),只能改成scanf("%c",&s);
二、它们的功能没有什么区别的。

热心网友 时间:1天前

getchar读取你按下回车前全部的字符流,但是只读取第一个,因为函数得到的是字符
scanf可以读整数、字符、字符串,按你在引号中间指定的格式匹配这一流,把对应值赋予到对应地址,直到不匹配返回,所以遇到最后一个%c而有剩余多个字符在输入中时,也是只取第一个
但遇到连续输入多个字符的情况是,scanf可以满足使用

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com