c语言中getchar()的用法

输入的是1空格+空格3是运行时两空格都被读入?还是。。输入的也是1空格+空格3是运行时前一个空格被读入,后一个空格被赋予c?还是。。。c的类型不一致时为何运行结果不一致?... 输入的是1空格+空格3
是运行时两空格都被读入?还是。。

输入的也是1空格+空格3
是运行时前一个空格被读入,后一个空格被 赋予c?还是。。。
c的类型不一致时为何运行结果不一致?
展开
 我来答
一诺宝贝8677
2018-05-29 · TA获得超过9430个赞
知道小有建树答主
回答量:66
采纳率:75%
帮助的人:2.5万
展开全部
main()
{
int c;
while((c=getchar())!='\n')
printf("%c",c);
}

这段程序的作用是读入一个字符后立即输出, 直到输入一个“换行”为止(从键盘输入一个字符,如果不是换行符就执行printf,在屏幕输出); 同时,注意从终端键盘向计算机输入时,是在按 ENTER 键以后才将一批数据一起送到内存缓冲区中去的。
使用getchar函数还应注意几个问题:
getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只 接收第一个字符。
使用本函数前必须包含文件“stdio.h”。
在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入 完毕再返回TC屏幕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2018-04-15 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
ch=getchar(); //从缓冲区中读入一个字符赋给ch
while (ch != '#') //检查ch是否等于'#'
putchar(ch); //如果不等于'#'则执行循环体,输出ch的值然后返回上一行
getchar(); //如果ch不等于'#',这里的代码永远不会执行到
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackwind1987
推荐于2018-03-23 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:481万
展开全部
要明白这个这个问题,首先要理解输入缓冲的机制和scanf的原理。
当运行控制台程序的时候,会有一个输入缓冲区,这个缓冲区就是放置你输入的字符串的,无论你输入的是数字还是字符,放到缓冲区里都是字符串,只有你调用scanf时指定不同的格式才会产生不同的含义。只有当你输入回车的时候,才会把你的输入添加到缓冲区里,当输入回车之前,scanf和getchar都还没有调用。
当你调用scanf的时候,会首先检查缓冲区是否还有内容,如果没有则程序停止,接受输入,当你输入回车后,你的输入进入缓冲区,然后scanf从缓冲区中拿出(拿出的意思是从缓冲区复制一份放到变量里,然后从缓冲区中删除)它想要的字符,如果没有它想要的,则不会从缓冲区中删除任何东西,继续运行。关键是什么是它想要的,这就跟scanf的第一个参数里指定的格式有关了。
如果格式是%c,那么任何字符都是它想要的,所以你第二个程序里的第二个scanf("%c")会得到‘+’后面的空格' '。如果格式是%d,则会忽略任何空白字符(空格、回车、制表符等),忽略的意思是,从缓冲区里删除,但并不保存;如果遇到数字,则拿出并保存给后面的整数,也就是说%d的时候,scanf想要的字符是数字和空白符。所以你第一个程序里的第二个scanf("%d")忽略掉了空格,正确输入了数字。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贸石检安
2019-06-15 · TA获得超过3万个赞
知道大有可为答主
回答量:9512
采纳率:34%
帮助的人:842万
展开全部
getchar函数中输入一个字符,包括数字都可以。
例:c=getchar()这个语句的话,程序执行到这个地方的时候,会要求你输入一个字符,输入字符按下回车,你所输入的字符就传到了变量c中
再例:getchar()表示起暂停作用哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钭育普微
2019-02-19 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:29%
帮助的人:710万
展开全部
getchar()要读入回车后才会跳出循环648152后面只有跟回车才会执行下一个语句
,否则继续执行循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式