当前位置:编程学习 > C/C++ >>

关于getchar还是弄不清,求C高手帮忙,谢谢

以下是C Primer Plus里面的一个例子,叫guess.c 重点是内循环while抛弃一行中除了首字母后的其余字符(包括换行符) 而内循环条件明明是 != '\n' 求正解,谢谢 #include <stdio.h> int main(void) { int i = 1; printf("我猜你心里想的数字是(y说明正确,n说明错误)%d\n",i); while(getchar() != 'y') { printf("哦,那会不会是%d?\n",++i); while(getchar() != '\n') continue; } printf("就是这样,疑问是内循环while为啥会连同最后输入的换行符一块抛弃?\n"); printf("我不用内循环while就会出现点一个字母后,出来两个数字,因为记录了回车\n"); printf("用了内循环,但是内循环是说只要不是回车就抛弃,为啥还会抛弃换行符呢?\n"); return 0; }
追问:纠结了一天,发现了一个灵感,我最后理解为,getchar好像一个消耗器,读取的同时就消耗掉了那个字符,同时也进入了输入流里,要不要拿它来起什么作用,就看循环内容,如果什么也不做就是抛弃。内循环里的getchar,循环一次,就消耗掉一个字符,等到最后一个换行符的时候,它也消耗了,但是消耗掉了才发现,它是换行符,不满足内循环条件,于是退出了内循环,此时所输入的字符串中,就只剩下了首字母。
答案:因为今天没有编译器,所以就根据问题说一下,貌似我之前的一个回答中已经说明过了所有的问题了,因为数据的输入确认使用的是回车键,所以在进行编译的时候,一旦遇到回车键就会自动跳过continue,又因为第二个getchar没有对任何一个数据赋值,所以只是执行输入而不执行存储,相当于只是其判断作用。

上一个:电脑被远程控制,求帮助, 知道这是违法行为,该如何处理,怎么截取证据.
下一个:有没有C++的MFC教程?看孙鑫老师的好难懂哦...

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,