| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 623 人关注过本帖
标题:SOS , C???????????
只看楼主 加入收藏
灭国者
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
SOS , C???????????
  1 #include <stdio.h>
  2
  3 int main(void)
  4 {
  5     int op = 1;
  6
  7     do {
  8            fscanf(stdin,"%d",&op);   //如果输入的是整数正常,非整数死循环。???
  9            fprintf(stdout,"SOS\n");
 10     }while(op != 0);
 11
 12     return 0;
 13 }
~                                                                              
~            
搜索更多相关主题的帖子: SOS 
2010-06-20 16:26
xiaomanaruto
Rank: 6Rank: 6
等 级:侠之大者
帖 子:79
专家分:443
注 册:2010-4-1
收藏
得分:20 
你定义的op不是整形的吗?
当你输入的数据和你定义的变量类型不一致的话会自动转换的,也就意味着会舍去浮点型数据的小数部分,可能是你输入的数在舍去后刚好为0了。
2010-06-20 16:47
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1697
专家分:4305
注 册:2007-12-27
收藏
得分:0 
你写的语句只能正确处理整数,你就不应该试图输入其它东西。
就好像人只能靠吸收氧气活着,要是进入个无氧的环境,当然就朝死了循环了。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-06-20 18:48
灭国者
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-15
收藏
得分:0 
楼上的太幽默了,遇到问题就要想办法如何解决,而不是去寻找解决不了的理由。
  1 答案:
  3 int main(void)
  4 {
  5     int op = 1,n = 0;
  6
  7     do {
  8            n = fscanf(stdin,"%d",&op);   //当fscanf失败时返回0
                if( !n) while( getchar() != '\n' );     //将流中的非法字符输出
  9            fprintf(stdout,"SOS\n");
10     }while(op != 0);
11
12     return 0;
13 }
2010-06-20 21:59
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1697
专家分:4305
注 册:2007-12-27
收藏
得分:0 
我可一点也没打算幽默。
通读LZ您的1楼帖子,唯一带问号的地方就是在问为什么不输入整数的话程序就会死循环。
我的解释意思是告诉您scanf系列函数的局限性摆在那里,要使用它您就不得不迁就它。

瞧,您的问题并不包括怎样解决问题,可能您下意识地认为您自己的意思是想要解决问题,可是您没有这样表达。
而我的习惯是针对人家的问题来回答,不要回答人家没问的东西,于是误会就这样产生了~~~555

BTW:如果您真的打算应付用户的任意输入,那您应该做的是使用fgets之类的来接收字符串输入,然后写代码确认输入的合法性,如果合法再转换为适当的类型,如果不合法就提示用户。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-06-21 10:27
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
以下是引用forever74在2010-6-21 10:27:03的发言:

我可一点也没打算幽默。
通读LZ您的1楼帖子,唯一带问号的地方就是在问为什么不输入整数的话程序就会死循环。
我的解释意思是告诉您scanf系列函数的局限性摆在那里,要使用它您就不得不迁就它。

瞧,您的问题并不包括怎样解决问题,可能您下意识地认为您自己的意思是想要解决问题,可是您没有这样表达。
而我的习惯是针对人家的问题来回答,不要回答人家没问的东西,于是误会就这样产生了~~~555

BTW:如果您真的打算应付用户的任意输入,那您应该做的是使用fgets之类的来接收字符串输入,然后写代码确认输入的合法性,如果合法再转换为适当的类型,如果不合法就提示用户。
《 大卫.考波菲尔》 中的 威克菲尔 先生做事只看动机,而且相信每人做事只有一个动机。您回答问题只回答一个问题。(没有其他意思,只是觉得有些类似)。
2010-06-21 12:48
快速回复:SOS , C???????????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039997 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved