搜索
查看: 3763|回复: 19
打印 上一主题 下一主题

正式版教材中已发现的一些错误

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-2 14:33:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 rosynirvana 于 2013-10-2 14:47 编辑

160页顶部
scanf("%c", a)两处,应为scanf("%c", &a);
164页, 174页
"\0"应作 '\0',字符串末尾的终止字符是一个char,而不是一个字符串
165页,166页
scanf("%x", ....) ,这里没有语法或者语义上的错误,但是不明白为什么要特意用%x替代符,是笔误吗?(向磊哥求证)
131页
time函数的声明在time.h头文件中,教材中没有提到要包含头文件,疏漏?

附录1:
189页,“下画线”两处。我没有查过字典,但是感觉上一般会写成“下划线”?

附录2:
这个表是C++的,C没有:: new delete这些操作符

评分

参与人数 1啊哈币 +10 收起 理由
啊哈磊 + 10 很给力!

查看全部评分

推荐
 楼主| 发表于 2013-10-2 14:45:22 | 只看该作者
可以避免的不可移植:
37页, 这里用%lf来输出double,但事实上%lf不是ISO C中所含有的printf占位符(double和float一样是用%f的)

131页,rand输出的范围不是0-32767,而是0-RAND_MAX, RAND_MAX是定义在stdlib.h中的一个macro;在msvcrt中碰巧是32767
微软现在依然把这个范围限定成16位是因为新的msvcrt中有个更安全的rand_s的函数,可以返回UINT_MAX之内的随机数

我觉得这里表述成“在我们的啊哈C中,是0-32767”比较好。非微软平台上的rand一般都是32位的。

161页,getch和getche这两个函数MS已经舍弃了,用_getch和_getche比较好,不然没准到哪天又不能用了
另外,这两个函数的声明在conio.h中,加上比较好

点评

说的很有道理啊:) 赞一个  发表于 2014-2-18 00:47
板凳
 楼主| 发表于 2013-10-2 14:50:51 | 只看该作者
最后,还是建议不要用gets和float
fgets比较好,虽然稍微麻烦点
一概用double替换float也能避免很多无谓的困扰,而且在新人所写的程序里面,多用的那点内存可以忽略
地板
发表于 2013-10-2 18:20:38 | 只看该作者
啊。。。那书已经出版了怎么办。。。
5#
 楼主| 发表于 2013-10-2 22:18:05 | 只看该作者
Dsp 发表于 2013-10-2 18:20
啊。。。那书已经出版了怎么办。。。

所有像样的技术书籍都有errata的
6#
发表于 2013-10-4 14:42:44 | 只看该作者
厉害!这都被你发现了,大神!!!!膜拜ing……
7#
发表于 2013-10-4 22:04:54 | 只看该作者
我也发现有些头文件没加,可是啊哈C都能运行,比如time函数的头文件不加,也能运行{:soso_e134:}
8#
 楼主| 发表于 2013-10-4 23:15:33 | 只看该作者
 头文件不加很多时候是可以运行的,这和啊哈C无关,C90本身就容忍这么做
9#
发表于 2013-10-5 12:57:54 | 只看该作者
指出的好详细   
10#
发表于 2013-10-5 14:43:17 来自手机 | 只看该作者
实体书刚到,看了一下,真的像楼上所说。
11#
发表于 2013-10-6 13:51:00 | 只看该作者
说实话....我刚学...没看懂2楼和3楼什么意思!!!

还有
(165页,166页
scanf("%x", ....) ,这里没有语法或者语义上的错误,但是不明白为什么要特意用%x替代符,是笔误吗?(向磊哥求证)
131页
time函数的声明在time.h头文件中,教材中没有提到要包含头文件,疏漏?)


我都没看懂!!!!
12#
 楼主| 发表于 2013-10-6 14:11:10 | 只看该作者
lhr719311575 发表于 2013-10-6 13:51
说实话....我刚学...没看懂2楼和3楼什么意思!!!

还有

刚学自然是看不懂的,勘误是给作者看的,请他确认是否有误,然后制作官方勘误表

点评

确实是笔误:)  发表于 2014-2-18 00:48
13#
发表于 2013-10-10 23:31:40 | 只看该作者
还有P145"第3个人再去把2号萝卜"有错别字。
P135代码里输出的是60秒后关机,但下面一行是50秒后关机。

点评

对!  发表于 2018-7-23 18:20
14#
 楼主| 发表于 2013-10-10 23:49:13 | 只看该作者
说来我有点好奇
在NT6及以上的系统中,关机难道不需要管理员权限的?
15#
发表于 2013-12-2 15:08:02 | 只看该作者
rosynirvana 发表于 2013-10-2 14:50
最后,还是建议不要用gets和float
fgets比较好,虽然稍微麻烦点
一概用double替换float也能避免很多无谓的 ...
  1. fgets(a,sizeof(a),stdin);
复制代码
是这样的格式吧?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表