C标准库(C标准库“圣经”)
基本信息
- 原书名: The Standard C Library
- 原出版社: Prentice Hall PTR
- 作者: (美)P.J.Plauger [作译者介绍]
- 译者: 卢红星 徐明亮 霍建同
- 丛书名: 图灵程序设计丛书 C/C++系列
- 出版社:人民邮电出版社
- ISBN:9787115172860
- 上架时间:2009-6-23
- 出版日期:2009 年7月
- 开本:16开
- 页码:473
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C/Turbo C > C
编辑推荐
C标准库“圣经”.
提供完整源代码,全面深入阐述库函数的实现与运用..
C程序员必备参考书...
内容简介回到顶部↑
本书是由世界级c语言专家编写的c标准库经典著作。英文版已经重印十多次,影响了几代程序员。.
本书结合c标准的 相关部分,精辟地讲述了每一个库函数的使用方法和实现细节,而这正是一个真正的c程序员所必须掌握的。更重要的是,书中给出了实现和测试这些函数的完整源 代码,可以让你更深入地学习c语言。不仅如此,本书还讨论了一些即使是最有经验的c程序员通常也不熟悉的知识,比如国际化和独立于区域设置的程序的编写、 与构建库相关的概念和设计思想。...
本书结合c标准的 相关部分,精辟地讲述了每一个库函数的使用方法和实现细节,而这正是一个真正的c程序员所必须掌握的。更重要的是,书中给出了实现和测试这些函数的完整源 代码,可以让你更深入地学习c语言。不仅如此,本书还讨论了一些即使是最有经验的c程序员通常也不熟悉的知识,比如国际化和独立于区域设置的程序的编写、 与构建库相关的概念和设计思想。...
作译者回到顶部↑
本书提供作译者介绍
P. J. Plauger 世界著名的软件技术专家,曾任ISO C标准委员会主席,C/C++ User’s Journal主编,现任ISO C++标准委员会主席。他是C/C++标准库开发领域的大师,所开发的Dinkumware标准库应用广泛。...
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第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
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
译者序回到顶部↑
理论上,在学习完任何编程语言的基本语法后,我们就可以用它来编写程序以解决任何实际的问题了。但是,熟练地使用语言中已经提供的代码库有助于我们在编程时极大地减少工作量和避免不必要的错误。语言所衍生出的任何能提高生产力的库,其重要性往往会远远超过该语言本身。对这些库的了解程度,也是评判一位优秀程序员的重要标准。因此,学习一门语言并学习其库的实现,这样才能熟练地驾驭语言工具,了解库所提供的功能和局限性,进而在特定的应用要求下扩展库——这往往是初学者普遍忽视的一个重要细节。
C 语言更是如此!尽管它及它所附带的C 标准库中隐藏着太多的晦涩陷阱,但用C 语言编写的程序却已深入到软件行业的各个关键角落,使我们不得不要花大力气“过分”地钻研它。已经有太多的书关注了C 语言本身及C 标准库应如何使用,本书却独树一帜,它将告诉你C 标准库是如何用标准C 来实现的。学习C 标准库本身的实现,就是学习C 语言最好的教材,因为其实现过程将会把使用C 语言编写具有工业强度的健壮代码所需的技巧展现得淋漓尽致。
如果想仔细探究C 标准库的实现细节,P. J. Plauger 的这本书将是你最好的选择 。C 标准库由在15 个头文件中声明的函数、类型定义和宏组成,每个头文件或多或少代表了一定范围的编程功能。有人说,标准库可以分为3 组,如何正确和熟练地使用它们,可以相应地区分出3种层次的C 程序员:
合格程序员,(ctype.h)、(stdio.h)、(stdlib.h)、(string.h);
熟练程序员,(assert.h)、(limits.h)、(stddef.h)、(time.h);
优秀程序员, (float.h)、(math.h)、(error.h)、(locale.h)、(setjmp.h)、(signal.h)、(stdarg.h)。
如果你反复研读本书,并能将本书所提供的9 000 余行关键实现代码中所蕴藏的C 语言精
髓熟稔地应用到你正要或将要从事的实际开发中去,那么,毫无疑问,你已完全超越了上面
“优秀程序员”的标准,成为“超优秀程序员”!
希望这本令我在翻译过程中获益匪浅的书也能给你带来美妙而独一无二的阅读享受!
最后,感谢人民邮电出版社图灵公司刘江和傅志红编辑的邀请和信任,他们踏实负责、兢兢业业的工作精神极大地鞭策了我;感谢霍建同、贾彦磊、万振杰等参与了部分章节的初译及整理工作;感谢郑州大学的卢红星老师认真审阅和复译全稿,他深厚的技术积淀、丰富的教学经验以及一丝不苟、精益求精的严谨态度也令我在翻译过程中获益良多;更要感谢我的妻子徐静,谢谢你的爱。由于译者经验和水平有限,译文难免有不妥之处,敬请读者指正并与我交流:develop_game@yahoo.com.cn。...
徐明亮
C 语言更是如此!尽管它及它所附带的C 标准库中隐藏着太多的晦涩陷阱,但用C 语言编写的程序却已深入到软件行业的各个关键角落,使我们不得不要花大力气“过分”地钻研它。已经有太多的书关注了C 语言本身及C 标准库应如何使用,本书却独树一帜,它将告诉你C 标准库是如何用标准C 来实现的。学习C 标准库本身的实现,就是学习C 语言最好的教材,因为其实现过程将会把使用C 语言编写具有工业强度的健壮代码所需的技巧展现得淋漓尽致。
如果想仔细探究C 标准库的实现细节,P. J. Plauger 的这本书将是你最好的选择 。C 标准库由在15 个头文件中声明的函数、类型定义和宏组成,每个头文件或多或少代表了一定范围的编程功能。有人说,标准库可以分为3 组,如何正确和熟练地使用它们,可以相应地区分出3种层次的C 程序员:
合格程序员,(ctype.h)、(stdio.h)、(stdlib.h)、(string.h);
熟练程序员,(assert.h)、(limits.h)、(stddef.h)、(time.h);
优秀程序员, (float.h)、(math.h)、(error.h)、(locale.h)、(setjmp.h)、(signal.h)、(stdarg.h)。
如果你反复研读本书,并能将本书所提供的9 000 余行关键实现代码中所蕴藏的C 语言精
髓熟稔地应用到你正要或将要从事的实际开发中去,那么,毫无疑问,你已完全超越了上面
“优秀程序员”的标准,成为“超优秀程序员”!
希望这本令我在翻译过程中获益匪浅的书也能给你带来美妙而独一无二的阅读享受!
最后,感谢人民邮电出版社图灵公司刘江和傅志红编辑的邀请和信任,他们踏实负责、兢兢业业的工作精神极大地鞭策了我;感谢霍建同、贾彦磊、万振杰等参与了部分章节的初译及整理工作;感谢郑州大学的卢红星老师认真审阅和复译全稿,他深厚的技术积淀、丰富的教学经验以及一丝不苟、精益求精的严谨态度也令我在翻译过程中获益良多;更要感谢我的妻子徐静,谢谢你的爱。由于译者经验和水平有限,译文难免有不妥之处,敬请读者指正并与我交流:develop_game@yahoo.com.cn。...
徐明亮
前言回到顶部↑
本书将告诉你如何使用符合C 语言的ANSI/ISO 标准的库函数。因为已经有很多书出色地讲解了C 语言本身,所以本书只专注于“库”这个话题。本书还会告诉你C 标准库是如何实现的。本书提供了大约9 000 行测试过的可实际工作的代码。我相信,看了C 标准库的实现细节后你能更好地理解如何使用它。.
库函数的实现代码尽可能地使用标准C,这样做有3 个设计目的:首先,它使代码具有可读性和示范性;其次,它使代码在各种计算机体系结构间具有高度可移植性;最后,它能使编写的代码兼顾正确性、性能和规模各方面。
教你如何编写C 程序并不是本书的目的。本书假定你能读懂简单的C 程序,对于那些稍有难度的代码,我会向你解释其中的难点和技巧。
C 标准库
C 标准库是非常强大的,它在多种不同的环境下提供了相当多的功能:它允许用户和实现者使用明确定义的名字空间;它对其所提供的数学函数的健壮性和精确性有非常严格的要求; 它率先对适应不同文化习惯的代码提供支持,包括那些拥有很大字符集的文化习惯。
为了能有效利用标准库所提供的强大功能,用户应该了解其实现上的很多隐晦细节。库的实现者必须向用户提供这些细节,以使他们更好地使用标准库。C 标准中并没有把这些隐晦的实现细节都很好地描述清楚,因为制定标准的主要目的并不是给库的实现者提供指导。与ANSI C 标准一起发布的Rationale 也没有对这些细节作出很好的解释。Rationale 要服务的对象范围很广,而关注这些细节的标准实现者只是众多服务对象的一部分。
在C 的传统实现中并不能找到上面提到的新特性。现在的实现已经可以支持国际化开发中的区域设置(locale)概念。每个区域设置都对应于专属的某个国家、某种语言或者某个职业的特定习惯,一个C 程序可以通过修改和查询区域设置来动态地适应多种文化。现在的实现也能支持很大的字符集,如字符数量众多的汉字。C 程序能把它们作为多字节字符(multibyte character)或者宽字节字符(wide character)处理。它也能在这两种形式之间转换。在迅速加剧的市场竞争中,这就使得程序的编写更加简单和标准。
因为以前对这些新特性几乎不存在相应的编程艺术,所以即使是最有经验的C 程序员,在使用区域设置、多字节字符和宽字节字符的时候也需要一些指导。所以,这些主题在这里给予了特殊的关注。
细节
本书向用户和实现者解释了库的设计用意和可能用法。通过提供C 标准库中所有库函数的实际实现,本书用例子告诉你怎样处理它的细节。在那些没有明确是最好实现方法的地方,它还讨论了可供选择和折中的办法。
一个涉及细节的例子是函数getchar 。头文件(stdio.h) 原则上可以用下面的宏来屏蔽函数的声明:
#define getchar() fgetc(stdin) /* NOT WISE! */
然而,它却不应该这样做,一个合理(即使没有用)的C 程序是
#include (stdio.h)#undef fgetc
int main(void) { int fgetc = getchar();/* PRODUCES A MYSTERIOUS ERROR */
return (0);
}
当然,这个例子有点极端,但它却阐述了即使是一个很好的程序员也可能犯的错误。用户有权要求尽可能少地出现这类奇怪的错误,所以设计者就有义务避免出现这些奇怪的错误。
我最终确定的getchar 宏的形式是
#define getchar () (_Files[0]-)_Next ( _Files[0]-)_Rend \ ? *_Files[0]-)_Next++ : (getchar) ())
库函数的实现代码尽可能地使用标准C,这样做有3 个设计目的:首先,它使代码具有可读性和示范性;其次,它使代码在各种计算机体系结构间具有高度可移植性;最后,它能使编写的代码兼顾正确性、性能和规模各方面。
教你如何编写C 程序并不是本书的目的。本书假定你能读懂简单的C 程序,对于那些稍有难度的代码,我会向你解释其中的难点和技巧。
C 标准库
C 标准库是非常强大的,它在多种不同的环境下提供了相当多的功能:它允许用户和实现者使用明确定义的名字空间;它对其所提供的数学函数的健壮性和精确性有非常严格的要求; 它率先对适应不同文化习惯的代码提供支持,包括那些拥有很大字符集的文化习惯。
为了能有效利用标准库所提供的强大功能,用户应该了解其实现上的很多隐晦细节。库的实现者必须向用户提供这些细节,以使他们更好地使用标准库。C 标准中并没有把这些隐晦的实现细节都很好地描述清楚,因为制定标准的主要目的并不是给库的实现者提供指导。与ANSI C 标准一起发布的Rationale 也没有对这些细节作出很好的解释。Rationale 要服务的对象范围很广,而关注这些细节的标准实现者只是众多服务对象的一部分。
在C 的传统实现中并不能找到上面提到的新特性。现在的实现已经可以支持国际化开发中的区域设置(locale)概念。每个区域设置都对应于专属的某个国家、某种语言或者某个职业的特定习惯,一个C 程序可以通过修改和查询区域设置来动态地适应多种文化。现在的实现也能支持很大的字符集,如字符数量众多的汉字。C 程序能把它们作为多字节字符(multibyte character)或者宽字节字符(wide character)处理。它也能在这两种形式之间转换。在迅速加剧的市场竞争中,这就使得程序的编写更加简单和标准。
因为以前对这些新特性几乎不存在相应的编程艺术,所以即使是最有经验的C 程序员,在使用区域设置、多字节字符和宽字节字符的时候也需要一些指导。所以,这些主题在这里给予了特殊的关注。
细节
本书向用户和实现者解释了库的设计用意和可能用法。通过提供C 标准库中所有库函数的实际实现,本书用例子告诉你怎样处理它的细节。在那些没有明确是最好实现方法的地方,它还讨论了可供选择和折中的办法。
一个涉及细节的例子是函数getchar 。头文件(stdio.h) 原则上可以用下面的宏来屏蔽函数的声明:
#define getchar() fgetc(stdin) /* NOT WISE! */
然而,它却不应该这样做,一个合理(即使没有用)的C 程序是
#include (stdio.h)#undef fgetc
int main(void) { int fgetc = getchar();/* PRODUCES A MYSTERIOUS ERROR */
return (0);
}
当然,这个例子有点极端,但它却阐述了即使是一个很好的程序员也可能犯的错误。用户有权要求尽可能少地出现这类奇怪的错误,所以设计者就有义务避免出现这些奇怪的错误。
我最终确定的getchar 宏的形式是
#define getchar () (_Files[0]-)_Next ( _Files[0]-)_Rend \ ? *_Files[0]-)_Next++ : (getchar) ())
媒体评论回到顶部↑
“绝对一流的著作,C程序员的饕餮大餐!”
——C/C++用户协会...
——C/C++用户协会...
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)
· 图灵公司详细书目








点击看大图






加载中...

