C语⾔中getchar()的⽤法详谈,c语⾔getchar的⽤法1.从缓冲区读⾛⼀个字符,相当于清除缓冲区
2.前⾯的scanf()在读取输⼊时会在缓冲区中留下⼀个字符'\n'(输⼊完s[i]的值后按回车键所致),
所以如果不在此加⼀个getchar()把这个回车符取⾛的话,gets()就不会等待从键盘键⼊字符,⽽
是会直接取⾛这个“⽆⽤的”
回车符,从⽽导致读取有误
3.
getchar()是在输⼊缓冲区顺序读⼊⼀个字符(包括空格、回车和Tab)
getchar()使⽤不⽅便,解决⽅法:
(1)使⽤下⾯的语句清除回车:
while(getchar()!='\n');
(2)⽤getche()或getch()代替getchar(),其作⽤是从键盘读⼊⼀个字符(不⽤按回车),注意要
包含头⽂件
4.【转】
getchar()是stdio.h中的库函数,它的作⽤是从stdin流中读⼊⼀个字符,也就是说,如果stdin有数
据的话不⽤输⼊它就可以直接读取了,第⼀次getchar()时,确实需要⼈⼯的输⼊,但是如果你输了多
个字符,以后的getchar()再执⾏时就会直接从缓冲区中读取了。
实际上是 输⼊设备->内存缓冲区->程序getchar
你按的键是放进缓冲区了,然后供程序getchar
你有没有试过按住很多键然后等⼀会⼉会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区.
键盘输⼊的字符都存到缓冲区内,⼀旦键⼊回车,getchar就进⼊缓冲区读取字符,⼀次只返回第⼀个
字符作为getchar函数的值,如果有循环或⾜够多的getchar语句,就会依次读出缓冲区内的所有字符
直到'\n'.要理解这⼀点,之所以你输⼊的⼀系列字符被依次读出来,是因为循环的作⽤使得反复利
⽤getchar在缓冲区⾥读取字符,⽽不是getchar可以读取多个字符,事实上getchar每次只能读取⼀
个字符.如果需要
取消'\n'的影响,可以⽤getchar();来清除,这⾥getchar();只是取得了'\n'但是并
c语言char的用法没有赋给任何字符变量,所以不会有影响,相当于清除了这个字符.还要注意的是这⾥你在键盘上输⼊ss
ss看到的回显正是来⾃于getchar的作⽤,如果⽤getch就看不到你输⼊了什么.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论