免费注册 查看新帖 |

Chinaunix

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

[C] 关于K&R 5.3节中 getint的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-03 01:19 |只看该作者 |倒序浏览
很久不用C了 下学期有门课会遇到C 所以重读K&R复习一下


在5.3节的最后给出了一个getint的例子

我其实不明白一点

它其中
  1. if ( ! isdigit (c) && c != '+' && c != '-' && c != EOF) {

  2. ungetch(c);
  3. return 0;
  4. }
复制代码
当遇到非数字字符时候把那个非数字字符压进buf里面

那样下次再调用getint不是又读到这个非数字字符么


这样一来 不是永远读不到 这个非数字字符后面后面的内容了么


还有 在前面一页 他说这个getint会被用在 读取流中数据  然后存放到一个数组中
  1. for (n=0;n<SIZE && getint(&array[n]) !=EOF;n++)
复制代码
如果碰到流里面有字母之类的 那么根据getint的代码 它直接就返回0 并且对当次的array[n]不做任何操作
那样导致的结果是 数组中有的项是未定义的  


谁能解释一下呢?

论坛徽章:
0
2 [报告]
发表于 2011-01-03 08:16 |只看该作者
就像你的描述一样,那种的确是会造成一种缺陷状态的输入了。

论坛徽章:
0
3 [报告]
发表于 2011-01-03 11:21 |只看该作者
那样 他在前一页里面提到的 那个for循环
如果遇到输入流里面含有字母 比如像1a22b333
这样的 只能获取"1"了么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP