关于getchar()的问题
发布网友
发布时间:2023-10-12 16:27
我来回答
共4个回答
热心网友
时间:2024-11-23 22:48
这里先阐明getchar()函数是从缓冲区读入1个字符的,即你输入的数据都被输入缓冲区中,也就是例如有c1=getchar();c2=getchar;执行,你输入a空格b回车后,'a'被赋给了c1,这时ch2=agetchar()紧接着执行,因为空格b回车还在缓冲区中,那么空格就被赋给了c2。即使你没输出两次回车,但已经满足了getchar()函数的要求,它有字符可接收了。
abc的ASCLL码分别是97.98.99。回车符的ASCLL码是10。
结合上面说的不难理解你说的问题了。
a回车 bcd回车执行后,a敷给了c1,回车符赋给了c2,b赋给了c3。
热心网友
时间:2024-11-23 22:48
第一次是依次读入a,b,c,因为输出类型是整型,所以输出a,b,c的整型值a-〉97,b-〉98,c-〉99
第二次是依次读入a,回车,b,同样的输出整型值97,10,98。
10是换行符的整型值
缓冲区的问题:输入时,如abcde,只是输入到了内存的叫做缓冲区的单元中,然后指令从这段缓冲区中读取输入的内容,有一个先后的过程。就像是自选食堂里,师傅们把菜盛好了,放在橱柜里,然后你从厨柜里取菜,橱柜空了,大家只能等了……因为电脑不是人,所以师傅放碗粥它也取了。
不知这样说你明不明白。
热心网友
时间:2024-11-23 22:49
#include <stdio.h>
main( )
{ char c1, c2, c3;
c1=getchar( );
c2=getchar( );
c3=getchar( );
printf ("%c,%c,%c\n", c1, c2, c3); }
注:1、getchar() 只能接受一个字符(回车也是一个字符)
2、%d是整型,应该改成%c
你第二次a 回车 bcd 回车,其实就是前面三个字符 a 回车 b 所以10就是回车的ASCII码
热心网友
时间:2024-11-23 22:50
兄弟,你设置的C1,C2,C3,是字符型的,可你格式化输出的时候用的是%d,%d代表的是整形啊!
应该是%c啊!