免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2868 | 回复: 5
打印 上一主题 下一主题

[C] C基础问题-IO [复制链接]

论坛徽章:
5
2015年迎新春徽章
日期:2015-03-04 09:58:1115-16赛季CBA联赛之上海
日期:2016-01-18 13:24:3015-16赛季CBA联赛之佛山
日期:2016-01-27 10:13:0515-16赛季CBA联赛之北控
日期:2016-08-04 22:33:2115-16赛季CBA联赛之山西
日期:2016-08-06 15:49:33
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-10 15:00 |只看该作者 |倒序浏览
请问如下两段代码有啥不同?

  1. 1.
  2.         do {
  3.                 printf("input: ");
  4.                 while ((c = getchar()) != EOF && c != '\n');
  5.         } while (scanf("%d", &a) != 1);

  6. 2.
  7.         while (1) {
  8.                 printf("input: ");
  9.                 if (scanf("%d", &a) == 1)
  10.                         break;
  11.                 while ((c = getchar())!='\n' && c!=EOF);
  12.         }

复制代码

论坛徽章:
0
2 [报告]
发表于 2013-10-10 15:18 |只看该作者
。。。。不明白你 什么意思

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2013-10-10 15:58 |只看该作者
前者是先清除一行,再读;后者是先读,有错误才清除一行。

我也写一个:
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int a;
  5.     for( ; printf("input: "), scanf("%d",&a)!=1; scanf("%*[^\n]") );

  6.     printf( "%d\n", a );

  7.     return 0;
  8. }
复制代码

论坛徽章:
5
2015年迎新春徽章
日期:2015-03-04 09:58:1115-16赛季CBA联赛之上海
日期:2016-01-18 13:24:3015-16赛季CBA联赛之佛山
日期:2016-01-27 10:13:0515-16赛季CBA联赛之北控
日期:2016-08-04 22:33:2115-16赛季CBA联赛之山西
日期:2016-08-06 15:49:33
4 [报告]
发表于 2013-10-10 16:08 |只看该作者
回复 3# bruceteen


    如果标准输入流中没有数据,getchar不是立马返回EOF吗?这样whlie就会退出

论坛徽章:
5
2015年迎新春徽章
日期:2015-03-04 09:58:1115-16赛季CBA联赛之上海
日期:2016-01-18 13:24:3015-16赛季CBA联赛之佛山
日期:2016-01-27 10:13:0515-16赛季CBA联赛之北控
日期:2016-08-04 22:33:2115-16赛季CBA联赛之山西
日期:2016-08-06 15:49:33
5 [报告]
发表于 2013-10-10 16:11 |只看该作者
bruceteen 发表于 2013-10-10 15:58

for( ; printf("input: "), scanf("%d",&a)!=1; scanf("%*[^\n]") );


你牛叉,不过不要检测EOF?

论坛徽章:
0
6 [报告]
发表于 2013-10-11 21:22 |只看该作者
你写这段代码是要完成什么任务?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP