C标准库(图灵程序设计丛书)
分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,C语言及其相关,
品牌: P.J.Plauger
基本信息·出版社:人民邮电出版社
·页码:473 页
·出版日期:2009年
·ISBN:9787115172860
·条形码:9787115172860
·包装版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:图灵程序设计丛书
产品信息有问题吗?请帮我们更新产品信息。
内容简介《C标准库》集中讨论了C标准库,全面介绍了ANSI/ISOC语言标准的所有库函数。书中通过引用ISOC标准的相关部分,详细讲解了每一个库函数的使用方法,并通过示例描述了其实现细节,且给出了实现和测试这些函数的完整代码。此外,每章结尾附有不同难度的习题,帮助读者巩固和提高。通过此书,读者将会更好地使用C标准库,并学会如何设计和实现库。
《C标准库》结构清晰,内容权威,阐述精辟,对于各层次C程序员和相关专业高校师生都是一本优秀的参考书。
作者简介P.J.Plauger,世界著名的软件技术专家,曾任ISO C标准委员会主席,C/C++User's Journal主编,现任ISO C++标准委员会主席。他是C/C++标准库开发领域的大师。所开发的Dinkumware标准库应用广泛。
编辑推荐C标准库“圣经”,提供完整源代码,全面深入阐述库函数的实现与运用。C程序员必备参考书。《C标准库》是由世界级C语言专家编写的C标准库经典著作。英文版已经重印十多次,影响了几代程序员。《C标准库》结合C标准的相关部分,精辟地讲述了每一个库函数的使用方法和实现细节,这正是一个真正的C程序员所必须掌握的。更重要的是,书中给出了实现和测试这些函数的完整源代码。可以让你更深入地学习C语言。不仅如此,《C标准库》还讨论了一些即使是最有经验的C程序员通常也不熟悉的知识,比如国际化和独立于区域设置的程序的编写、与构建库相关的概念和设计思想。
目录
第0章 简介 1
0.1 背景知识 1
0.2 C标准的内容 3
0.3 库的使用 7
0.4 库的实现 9
0.5 库的测试 13
0.6 参考文献 15
0.7 习题 15
第1章 assert.h 17
1.1 背景知识 17
1.2 C标准的内容 18
1.3 assert.h的使用 18
1.4 assert.h的实现 20
1.5 assert.h的测试 22
1.6 参考文献 23
1.7 习题 23
第2章 ctype.h 25
2.1 背景知识 25
2.2 C标准的内容 28
2.3 ctype.h的使用 30
2.4 ctype.h的实现 34
2.5 ctype.h的测试 42
2.6 参考文献 45
2.7 习题 45
第3章 errno.h 47
3.1 背景知识 47
3.2 C标准的内容 50
3.3 errno.h的使用 50
3.4 errno.h的实现 51
3.5 errno.h的测试 55
3.6 参考文献 55
3.7 习题 55
第4章 float.h 57
4.1 背景知识 57
4.2 C标准的内容 59
4.3 float.h的使用 62
4.4 float.h的实现 64
4.5 float.h的测试 69
4.6 参考文献 71
4.7 习题 72
第5章 limits.h 73
5.1 背景知识 73
5.2 C标准的内容 74
5.3 limits.h的使用 75
5.4 limits.h的实现 77
5.5 limits.h的测试 79
5.6 参考文献 80
5.7 习题 80
第6章 locale.h 81
6.1 背景知识 81
6.2 C标准的内容 84
6.3 locale.h的使用 87
6.4 locale.h的实现 94
6.5 locale.h的测试 123
6.6 参考文献 123
6.7 习题 123
第7章 math.h 127
7.1 背景知识 127
7.2 C标准的内容 130
7.3 math.h的使用 135
7.4 math.h的实现 137
7.5 math.h的测试 171
7.6 参考文献 177
7.7 习题 177
第8章 setjmp.h 181
8.1 背景知识 181
8.2 C标准的内容 184
8.3 setjmp.h的使用 185
8.4 setjmp.h的实现 187
8.5 setjmp.h的测试 191
8.6 参考文献 192
8.7 习题 192
第9章 signal.h 193
9.1 背景知识 193
9.2 C标准的内容 195
9.3 signal.h的使用 197
9.4 signal.h的实现 199
9.5 signal.h的测试 203
9.6 参考文献 203
9.7 习题 203
第10章 stdarg.h 205
10.1 背景知识 205
10.2 C标准的内容 207
10.3 stdarg.h的使用 208
10.4 stdarg.h的实现 211
10.5 stdarg.h的测试 212
10.6 参考文献 212
10.7 习题 214
第11章 stddef.h 215
11.1 背景知识 215
11.2 C标准的内容 217
11.3 stddef.h的使用 217
11.4 stddef.h的实现 222
11.5 stddef.h的测试 223
11.6 参考文献 223
11.7 习题 223
第12章 stdio.h 225
12.1 背景知识 225
12.2 C标准的内容 233
12.3 stdio.h的使用 252
12.4 stdio.h的实现 274
12.5 stdio.h的测试 323
12.6 参考文献 325
12.7 习题 325
第13章 stdlib.h 331
13.1 背景知识 331
13.2 C标准的内容 332
13.3 stdlib.h的使用 342
13.4 stdlib.h的实现 351
13.5 stdlib.h的测试 379
13.6 参考文献 379
13.7 习题 382
第14章 string.h 385
14.1 背景知识 385
14.2 C标准的内容 386
14.3 string.h的使用 392
14.4 string.h的实现 396
14.5 string.h的测试 409
14.6 参考文献 409
14.7 习题 409
第15章 time.h 413
15.1 背景知识 413
15.2 C标准的内容 414
15.3 time.h的使用 418
15.4 time.h的实现 422
15.5 time.h的测试 440
15.6 参考文献 441
15.7 习题 441
附录A 接口 443
附录B 名字 451
附录C 术语 461
……[看更多目录]
序言理论上,在学习完任何编程语言的基本语法后,我们就可以用它来编写程序以解决任何实际的问题了。但是,熟练地使用语言中已经提供的代码库有助于我们在编程时极大地减少工作量和避免不必要的错误。语言所衍生出的任何能提高生产力的库,其重要性往往会远远超过该语言本身。对这些库的了解程度,也是评判一位优秀程序员的重要标准。因此,学习一门语言并学习其库的实现,这样才能熟练地驾驭语言工具,了解库所提供的功能和局限性,进而在特定的应用要求下扩展库——这往往是初学者普遍忽视的一个重要细节。
c语言更是如此!尽管它及它所附带的c标准库中隐藏着太多的晦涩陷阱,但用c语言编写的程序却已深入到软件行业的各个关键角落,使我们不得不要花大力气“过分”地钻研它。已经有太多的书关注了c语言本身及c标准库应如何使用,本书却独树一帜,它将告诉你c标准库是如何用标准c来实现的。学习c标准库本身的实现,就是学习c语言最好的教材,因为其实现过程将会把使用c语言编写具有工业强度的健壮代码所需的技巧展现得淋漓尽致。
如果想仔细探究C标准库的实现细节,P.J.Plauger。的这本书将是你最好的选择①。c标准库由在15个头文件中声明的函数、类型定义和宏组成,每个头文件或多或少代表了一定范围的编程功能。有人说,标准库可以分为3组,如何正确和熟练地使用它们,可以相应地区分出3、种层次的C程序员:
口合格程序员,、、、;
口熟练程序员,、、、;口优秀程序员,、、、、、、。如果你反复研读本书,并能将本书所提供的9000余行关键实现代码中所蕴藏的C语言精髓熟稔地应用到你正要或将要从事的实际开发中去,那么,毫无疑问,你已完全超越了上面“优秀程序员”的标准,成为“超优秀程序员”!文摘插图:
编写出好的数学函数是一件很难的事。现在的一个普遍现象是有些程序设计语言的实现提供的数学函数存在严重的缺陷。它们可能会对具有明确定义的函数值的参数产生中间值溢出,或者丢失很多位的有效数字,某些情况下还会产生错误结果。虽然实现人员有充足的时间来研究这些问题,但仍然有那么多的缺陷,这一点让人奇怪。计算机最早就用于解决各种工程或者数学难题,事实上,最早的库几乎完全由计算常用数学函数的函数组成。20世纪50年代出现的FORTRAN,就是以它的功能FORmula TRANslation(公式转换)的缩写来命名的,那些公式是由很多数学函数组成的。在过去的几十年中,实现人员变得越来越老练。IEEE754浮点数标准对浮点算术的安全和一致是一个重要的里程碑。(参考第4章中对浮点数表示和IEEE754标准的讨论。)但是从另一个角度来说,IEEE754又加重了实现人员的负担。因为它引入了渐进下溢,对无穷大和非数的编码,不同的精度要求不同大小的指数等复杂的东西。所以很多实现通常只支持IEEE 754标准的一部分,而不是全部。我花在编写和调试中声明的函数的时间和这个库中其他所有的函数加起来的时间差不多,这的确让我有点吃惊。在过去的二十多年的时间中,我对每一个数学库函数都至少预先编写过3遍所以你可能会认为我应该有足够的时间来避免错误的发生,我也曾这样认为,但事实并非如此。