c语言中getchar()的用法
输入的是1空格+空格3是运行时两空格都被读入?还是。。输入的也是1空格+空格3是运行时前一个空格被读入,后一个空格被赋予c?还是。。。c的类型不一致时为何运行结果不一致?...
输入的是1空格+空格3
是运行时两空格都被读入?还是。。
输入的也是1空格+空格3
是运行时前一个空格被读入,后一个空格被 赋予c?还是。。。
c的类型不一致时为何运行结果不一致? 展开
是运行时两空格都被读入?还是。。
输入的也是1空格+空格3
是运行时前一个空格被读入,后一个空格被 赋予c?还是。。。
c的类型不一致时为何运行结果不一致? 展开
15个回答
展开全部
main()
{
int c;
while((c=getchar())!='\n')
printf("%c",c);
}
这段程序的作用是读入一个字符后立即输出, 直到输入一个“换行”为止(从键盘输入一个字符,如果不是换行符就执行printf,在屏幕输出); 同时,注意从终端键盘向计算机输入时,是在按 ENTER 键以后才将一批数据一起送到内存缓冲区中去的。
使用getchar函数还应注意几个问题:
getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只 接收第一个字符。
使用本函数前必须包含文件“stdio.h”。
在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入 完毕再返回TC屏幕。
{
int c;
while((c=getchar())!='\n')
printf("%c",c);
}
这段程序的作用是读入一个字符后立即输出, 直到输入一个“换行”为止(从键盘输入一个字符,如果不是换行符就执行printf,在屏幕输出); 同时,注意从终端键盘向计算机输入时,是在按 ENTER 键以后才将一批数据一起送到内存缓冲区中去的。
使用getchar函数还应注意几个问题:
getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只 接收第一个字符。
使用本函数前必须包含文件“stdio.h”。
在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入 完毕再返回TC屏幕。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ch=getchar(); //从缓冲区中读入一个字符赋给ch
while (ch != '#') //检查ch是否等于'#'
putchar(ch); //如果不等于'#'则执行循环体,输出ch的值然后返回上一行
getchar(); //如果ch不等于'#',这里的代码永远不会执行到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要明白这个这个问题,首先要理解输入缓冲的机制和scanf的原理。
当运行控制台程序的时候,会有一个输入缓冲区,这个缓冲区就是放置你输入的字符串的,无论你输入的是数字还是字符,放到缓冲区里都是字符串,只有你调用scanf时指定不同的格式才会产生不同的含义。只有当你输入回车的时候,才会把你的输入添加到缓冲区里,当输入回车之前,scanf和getchar都还没有调用。
当你调用scanf的时候,会首先检查缓冲区是否还有内容,如果没有则程序停止,接受输入,当你输入回车后,你的输入进入缓冲区,然后scanf从缓冲区中拿出(拿出的意思是从缓冲区复制一份放到变量里,然后从缓冲区中删除)它想要的字符,如果没有它想要的,则不会从缓冲区中删除任何东西,继续运行。关键是什么是它想要的,这就跟scanf的第一个参数里指定的格式有关了。
如果格式是%c,那么任何字符都是它想要的,所以你第二个程序里的第二个scanf("%c")会得到‘+’后面的空格' '。如果格式是%d,则会忽略任何空白字符(空格、回车、制表符等),忽略的意思是,从缓冲区里删除,但并不保存;如果遇到数字,则拿出并保存给后面的整数,也就是说%d的时候,scanf想要的字符是数字和空白符。所以你第一个程序里的第二个scanf("%d")忽略掉了空格,正确输入了数字。
当运行控制台程序的时候,会有一个输入缓冲区,这个缓冲区就是放置你输入的字符串的,无论你输入的是数字还是字符,放到缓冲区里都是字符串,只有你调用scanf时指定不同的格式才会产生不同的含义。只有当你输入回车的时候,才会把你的输入添加到缓冲区里,当输入回车之前,scanf和getchar都还没有调用。
当你调用scanf的时候,会首先检查缓冲区是否还有内容,如果没有则程序停止,接受输入,当你输入回车后,你的输入进入缓冲区,然后scanf从缓冲区中拿出(拿出的意思是从缓冲区复制一份放到变量里,然后从缓冲区中删除)它想要的字符,如果没有它想要的,则不会从缓冲区中删除任何东西,继续运行。关键是什么是它想要的,这就跟scanf的第一个参数里指定的格式有关了。
如果格式是%c,那么任何字符都是它想要的,所以你第二个程序里的第二个scanf("%c")会得到‘+’后面的空格' '。如果格式是%d,则会忽略任何空白字符(空格、回车、制表符等),忽略的意思是,从缓冲区里删除,但并不保存;如果遇到数字,则拿出并保存给后面的整数,也就是说%d的时候,scanf想要的字符是数字和空白符。所以你第一个程序里的第二个scanf("%d")忽略掉了空格,正确输入了数字。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
getchar函数中输入一个字符,包括数字都可以。
例:c=getchar()这个语句的话,程序执行到这个地方的时候,会要求你输入一个字符,输入字符按下回车,你所输入的字符就传到了变量c中
再例:getchar()表示起暂停作用哦。
例:c=getchar()这个语句的话,程序执行到这个地方的时候,会要求你输入一个字符,输入字符按下回车,你所输入的字符就传到了变量c中
再例:getchar()表示起暂停作用哦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
getchar()要读入回车后才会跳出循环648152后面只有跟回车才会执行下一个语句
,否则继续执行循环
,否则继续执行循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询