啊哈磊_编程从这里起步

标题: 正式版教材中已发现的一些错误 [打印本页]

作者: rosynirvana    时间: 2013-10-2 14:33
标题: 正式版教材中已发现的一些错误
本帖最后由 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这些操作符
作者: rosynirvana    时间: 2013-10-2 14:45
可以避免的不可移植:
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中,加上比较好
作者: rosynirvana    时间: 2013-10-2 14:50
最后,还是建议不要用gets和float
fgets比较好,虽然稍微麻烦点
一概用double替换float也能避免很多无谓的困扰,而且在新人所写的程序里面,多用的那点内存可以忽略
作者: Dsp    时间: 2013-10-2 18:20
啊。。。那书已经出版了怎么办。。。
作者: rosynirvana    时间: 2013-10-2 22:18
Dsp 发表于 2013-10-2 18:20
啊。。。那书已经出版了怎么办。。。

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

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


我都没看懂!!!!
作者: rosynirvana    时间: 2013-10-6 14:11
lhr719311575 发表于 2013-10-6 13:51
说实话....我刚学...没看懂2楼和3楼什么意思!!!

还有

刚学自然是看不懂的,勘误是给作者看的,请他确认是否有误,然后制作官方勘误表
作者: Dsp    时间: 2013-10-10 23:31
还有P145"第3个人再去把2号萝卜"有错别字。
P135代码里输出的是60秒后关机,但下面一行是50秒后关机。
作者: rosynirvana    时间: 2013-10-10 23:49
说来我有点好奇
在NT6及以上的系统中,关机难道不需要管理员权限的?
作者: 4399APPLE    时间: 2013-12-2 15:08
rosynirvana 发表于 2013-10-2 14:50
最后,还是建议不要用gets和float
fgets比较好,虽然稍微麻烦点
一概用double替换float也能避免很多无谓的 ...
  1. fgets(a,sizeof(a),stdin);
复制代码
是这样的格式吧?
作者: cad20020601    时间: 2013-12-3 17:23
4399APPLE 发表于 2013-12-2 15:08
是这样的格式吧?

膜拜学弟~~     
作者: 4399APPLE    时间: 2013-12-3 17:58
cad20020601 发表于 2013-12-3 17:23
膜拜学弟~~

干什么              




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2