初学C,望C朋友指点。

dreamc2010 2010-06-03 05:18:53
#include<stdio.h>
int main(void)
{
char c;
int ch;
scanf("%c",&c);
printf("1.%c\n",c);
while(scanf(" %d",&ch)!=1)
{
printf("Please again!");
}
printf("2.%d\n",ch);
getchar();
return 0;
}

此程序,本人意思是:键入数字即可显示数字。一旦键入其他字符,就显示一片Please again!。为什么输入非数字就无限显示:Please again!
...全文
62 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
匚匚 2010-06-03
  • 打赏
  • 举报
回复
你个S B老子以后不回复你的帖子了
猪!
匚匚 2010-06-03
  • 打赏
  • 举报
回复
楼上有理
huanmie_09 2010-06-03
  • 打赏
  • 举报
回复
2楼正确,3楼解释有点问题。
这里:
因为你输入时最后按了一个回车,这个回车还保留在缓冲区中,下次循环时,自动在里面寻找,若没有才等待输入...
当输入为非数字字符时,如a,
scanf(" %d",&ch)匹配字符'a'失败,scanf函数结束,将不能匹配的字符放回到键盘缓冲区,
这样如果不清空键盘缓冲区的话,下一次循环读取的时候,scanf还是匹配键盘缓冲区里德'a'字符.
再次失败,这样就陷入了死循环.
匚匚 2010-06-03
  • 打赏
  • 举报
回复

rewind(stdin); //就是为了将缓冲区的内容清除,便于下次正确输入
匚匚 2010-06-03
  • 打赏
  • 举报
回复
2楼就能解决问题,至于是什么原因:

因为你输入时最后按了一个回车,这个回车还保留在缓冲区中,下次循环时,自动在里面寻找,若没有才等待输入...


建议你养成结贴的习惯!
匚匚 2010-06-03
  • 打赏
  • 举报
回复
while(scanf(" %d",&ch)!=1)
{
printf("Please again!");
rewind(stdin); //加一句
}
  • 打赏
  • 举报
回复
int scanf();
scanf的返回值
  scanf的返回值有后面的参数决定   scanf("%d%d", &a, &b);   如果a和b都被成功读入,那么scanf的返回值就是2   如果只有a被成功读入,返回值为1   如果a和b都未被成功读入,返回值为0   如果遇到错误或遇到end of file,返回值为EOF。   且返回值为int型.





本资料大全致力于收集一切关于C语言的文章、技巧、教程、源代码和辅助工具软件。适合所有层次的C语言学习者。本资料大全免费下载,如您手头也有C语言相关资料,敬请分享,另外如您对本资料大全有任何建议或者意见希望能告诉我,以便以后继续改进。 请不要做浮躁的人 1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想 出来再参考别人的提示,你就知道自己和别人思路的差异。 2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久 都是只对部分功能熟悉而已,不系统还是不够的。 3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册, 虽然帮助的文字有时候很难看懂,总觉得不够直观。 4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。 5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸 出很多知识点;不会举一反三你就永远学不会。 6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。 7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览 群书; 8.看再多的书是学不全脚本的,要多实践 9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里; 10.学习脚本最好的方法之一就是多练习; 11.在任何时刻都不要认为自己手中的书已经足够了; 12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看; 13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍; 14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件; 15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中; 16.不要漏掉书中任何一个练习——请全部做完并记录下思路; 17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余 下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工 作。 18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的; 19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能 讲清楚才说明你真的理解了; 20.记录下在和别人交流时发现的自己忽视或不理解的知识点; 21.保存好你做过的所有的源文件----那是你最好的积累之一; 22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先 你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就 能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒! 23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问 题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己 的帖子没人回的。 24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方, 如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的 才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你 讨论呢。 能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒! 23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问 题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己 的帖子没人回的。 24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方, 如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的 才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你 讨论呢。 浮躁的人容易问:我到底该学什么;----别问,学就对了; 浮躁的人容易问:JS有钱途吗;----建议你去抢银行; 浮躁的人容易说:我要中文版!我英文不行!----不行?学呀! 浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 浮躁的人永远不是一个高手。
Visual C/C++作为功能强大的可视化应用程序开发工具,是计算机界公认的优秀应用开发工具。Microsoft的基本类库MFC使得开发Windows应用程序变得很容易,适合作各种系统软件、应用软件、网络软件、游戏软件等开发平台。 根据Visual C/C++的不同应用对象,将精选的190个实例共分数据库及图形图像分册、网络与通信分册、关键技术精解分册出版。本书为专家指点分册。全书本着实用第一的原则,紧紧围绕主题展开,循序渐进,由浅入深地介绍了使用Visual C/C++进行应用程序开发思想方法与编程技巧。 本书的特色体现如下几点:第一,每一章都是通过一个个的实例来介绍Visual C/C++应用编程方法和技巧,避免枯燥、空洞的理论,并且每一个实例都具有很强的实用性和代表性。第二,所选的每一个实例都是从事Visual C/C++应用编程人员的经验总结,具有很强的实用性,其中很多编程技巧可供借鉴。第三,每一个实例的程序源代码都是经过上机调试通过,给程序开发人员移植源代码带来了方便,从而加快应用编程的步伐。第四,对老版本经典实例进行点评,选取一些老版本开发环境的经典实例加以点评分析,使之能够起到触类旁通的作用。 本书适用于有一定Visual C/C++应用基础的编程人员和应用开发人员,对初学Visual C/C++编程的读者也有一定的参考价值。

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧