[C标准库].P.J.Plauger.扫描版.pdf )

5星(超过95%的资源)
所需积分/C币:44 2015-07-07 13:01:38 54.14MB PDF
24
收藏 收藏
举报

[C标准库].P.J.Plauger.扫描版.pdf )C程序开发必备
译者序 理论上,在学习完任何编程语言的基本语法后,我们就可以用它来编写程序以解决任何实 际的问题了。但是,熟练地使用语言中已经提供的代码库有助于我们在编程时极大地减少工作 量和避免不必要的错误。语言所衍生出的任何能提高生产力的库,其重要性往往会远远超过该 语言本身。对这些库的了解程度,也是评判一位优秀程序员的重要标准。因此,学习一门语言 并学习其库的实现,这样才能熟练地驾驭语言工具,了解库所提供的功能和局限性,进而在特 定的应用要求下扩展库—这往往是初学者普遍忽视的一个重要细节。 C语言更是如此!尽管它及它所附带的C标准库巾隐藏着太多的晦涩陷阱,但用C语言编 写的程序却已深人到软件行业的各个关键角落,使我们不得不要花大力气“过分”地钻研它 已经有太多的书关注了C语言本身及C标准库应如何使用,本书却独树一帜,它将告诉你C标 准库是如何用标准C来实现的。学习C标准库本身的实现,就是学习C语言最好的教材,因为 其实现过程将会把使用C语言编写具有工业强度的健壮代码所需的技巧展现得淋滴尽致。 如果想仔细探究C标准库的实现细节,P.J. Plauger的这本书将是你最好的选择①。C标准 库由在15个头文件中声明的函数、类型定义和宏组成,每个头文件或多或少代表了一定范围的 编程功能。有人说,标准库可以分为3组,如何正确和熟练地使用它们,可以相应地区分出3 种层次的C程序员: 口合格程序员,< ctype. h>、< stdio.h>、< talib.h>、< string. h> 口熟练程序员,< assert.h>、<1 imts.h>、< stddef.h>、<time.h>; 口优秀程序员,<f1oat,h>、<math,h>、< error.h>、<loca1e.h>、< set. mp.h>、 < siglE1.h>、< stdarg.h>。 如果你反复研读本书,并能将本书所提供的9000余行关键实现代码中所蕴藏的C语言精 髓熟稔地应用到你正要或将要从事的实际开发中去,那么,毫无疑问,你已完全超越了上面 “优秀程序员”的标准,成为“超优秀程序员”! 希望这本令我在翻译过程中获益匪浅的书也能给你带来美妙而独一无二的阅读享受! 最后,感谢人民邮电出版社图灵公司刘江和傅志红编辑的邀请和信任,他们踏实负责、兢 ①PJ. Plauger参与∫C和C艹标准库的升发,也是 The standad c++ Library一书的作者。—译者注 2译者序 兢业业的工作精神极大地鞭策了我;感谢霍建同、贾彦磊、万振杰等参与了部分章节的初译及 整理工作;感谢郑州大学的卢红星老师认真审阅和复译全稿,他深厚的技术积淀、丰富的教学 经验以及一丝不苟、精益求精的严谨态度也令我在翻译过程中获益良多:更要感谢我的妻子徐 静,谢谢你的爱。由于译者经验和水平有限,译文难免有不妥之处,敬请读者指正并与我交 i:developgame@yahoo.com.cn 徐明亮 本书将告诉你如何使用符合C语言的 ANSIISO标准的库函数。因为已经有很多书出色地 讲解了C语言本身,所以本书只专注于“库”这个话题。本书还会告诉你C标准库是如何实现 的。本书提供了大约9000行测试过的可实际工作的代码。我相信,看了C标准库的实现细节 后你能更好地理解如何使用它。 库函数的实现代码尽可能地使用标准C,这样做有3个设计目的:首先,它使代码具有可 读性和示范性;其欥,它使代码在各种计算机体系结构间具有高度可移植性:最后,它能使编 写的代码兼顾正确性、性能和规模各方面。 教你如何编写C程序并不是本书的目的。本书假定你能读懂简单的C程序,对于那些稍有 难度的代码,我会向你解释其中的难点和技巧。 C标准库 C标难库是非常强大的,它在多种不同的环境下提供了相当多的功能:它允许用户和实现 者使用明确定义的名字空间;它对其所提供的数学函数的健壮性和精确性有非常严格的要求 它率先对适应不同文化习惯的代码提供支持,包括那些拥有很大字符集的文化习惯。 为了能有效利用标准库所提供的强大功能,用户应该了解其实现上的很多隐晦细节。库的 实现者必须向用户提供这些细节,以使他们更好地使用标准库。C标准中并没有把这些隐晦的 实现细节都很好地描述清楚,因为制定标准的主要目的并不是给库的实现者提供指导。与ANS C标准一起发布的 Rationale也没有对这些细节作出很好的解释。 Rationale要服务的对象范围很 广,而关注这些细节的标准实现者只是众多服务对象的一部分。 在C的传统实现中并不能找到上面提到的新特性。现在的实现已经可以支持国际化开发 中的区域设置( locale)概念。每个区域设置都对应于专属的某个国家、某种语言或者某个职 业的特定习惯,一个C程序可以通过修改和查询区域设置来动态地适应多种文化。现在的实现 也能支持很大的字符集,如字符数量众多的汉字。C程序能把它们作为多字节宇符( multibyte character)或者寬宇节字符( wide character)处理。它也能在这两种形式之间转换。在迅速加剧 的市场竞争中,这就使得程序的编写更加简单和标准。 因为以前对这些新特性几乎不存在相应的编程艺术,所以即使是最有经验的C程序员,在 使用区域设置、多字节字符和宽字节字符的时候也需要一些指导。所以,这些主题在这里给予 2前言 了特殊的关注。 细节 本书向用户和实现者解释了库的设计用意和可能用法。通过提供C标准库中所有库函数的 实际实现,本书用例子告诉你怎样处理它的细节。在那些没有明确是最好实现方法的地方,它 还讨论了可供选择和折中的办法。 一个涉及细节的例子是函数 getchar。头文件< stdio. h>原则上可以用下面的宏来屏蔽函 数的声明: #define getchar()fgetc stdin)/* NOT WISE! */ 然而,它却不应该这样做,一个合理(即使没有用)的C程序是: #include cstdio.h> #uncef fgetc int main(void) getchar[): / PRODUCES A MYSTERIOUS ERROR * return (0): 当然,这个例子有点极端,但它却阐述了即使是一个很好的程序员也可能犯的错误。用户 有权要求尽可能少地出现这类奇怪的错误,所以设计者就有义务避免出现这些奇怪的错误 我最终确定的 getchar宏的形式是: #define getchar ()Files[0]->Next Files[0]->Rerd\ ?*_Files[C]->Next++: (getchar) () 它和上面第一次给出的那个显而易见(而且更具可读性)的形式大不相同。第12章会解释其中 的原因。 库的设计 本书还有一个目的,那就是从一般角度教授程序员怎样设计和实现库。从本质上讲,程序 设计语言提供的库是一个混合的“袋子”。库的实现者要具备非常广泛的技巧才能处理这个“袋 子”中各种各样的内容。仅仅是一个有能力的数值分析员,或者能熟练高效地操作字符串,或 者懂得很多操作系统接口方面的知识,都是不够的。编写库不仅需要具备以上所有能力,还需 要掌握更多的知识。 已经有很多好书告诉你怎样编写数学函数,也有很多书专门介绍某种特定用途的库。这些 都是告诉你怎样使用现有的库。有些书甚至证明某个库的各种设计方案抉择的正确性。很少有 书致力于告诉读者全面地构建一个库要求具备的技能。 溜客安全信息網 11010.176ku com 所提供书藉只限于披术考时使用 请选择到官方论坛购买期刊支持正版书藉 本电子书严禁在淘宝开店出售, 禁止当儆VIP收费项目孝 尽量在來站下载安全的电子书刊 溜客精神: 接術共享,資源共享,資料共享 不求最好,只求較好 做中國較好的網絡安全資料站 及时访间溜喜全网 嘴一时间下载技术姿翻 请將亦贴獲荐给更多的好友 让家都成渴宴一员 溜客童鹳逃三群 访问溜客佺啊最下方 查看本站嘬新Q群 加人溜客資料排享群超大排享下Tp等你來用 請勿重加入群,耠他人一點加入的空周 日录 第0章简介………… 36参考文献………s 0.1背景知识…… 3.7习题………… …55 02C标准的内容…………………3第4章<1oat.h>………… 03库的使用………7 04库的实现………… 9 4.1背景知识-……………,.… 05库的测试…………13 42C标准的内容……………………………9 06参考文献……… 15 4.3<f1oat.h>的使用………………62 07习题…………………………………15 44<f1oath>的实现………… 4. 的测试… 第1章<as8ert,h………1 69 4.6参考文献……………………………71 1.1背景知识……1 47习题……………………72 12C标准的内容……………………18 13< assert.h>的使用…………18 第5章<1 imits.h 73 14< assert.h>的实现……………20 51背景知识………………………13 1.5< assert.h>的测试………22 52C标准的内容………………………74 1.6参考文献…………………………23 53<1 amts.h的使用 1.7习题-…………… ……2354<1 im ts.h>的实现 世t主和“ 第2章< ctype. b………25 55<1 anits. h>的测试 56参考文献…………80 21背景知识 …25 57习题 22C标准的内容……………………28 23< ctype.h>的使用…………30 第6章<1oca1eh>… 8 24< ctype.h>的实现………34 6.1背景知识 25 ctype.h>的测试……… 62C标准的内容……84 26参考文献 63<1cca1e.h>的使用………87 2.7习题,………… 64<1 ocale.h>的实现…………… 94 第3章< B0,h>………47 65< locale.h>的测试……423 66参考文献………… 123 31背景知识 47 67习题……………………………123 32C标准的内容………………………50 33 cerro, h>的使用……50 第7章<math,hx………………127 34< erro. h>的实现………5l 7.1背景知识……… ……127 35< errno, h>的测试……-55 72C标准的内容………………………130 2目录 73<mahh>的使用…135第12章< sto.h> ……25 74< math. h>的实现……137 7.<mahh>的测试…………171 121背景知识……………………225 76参考文献…………………………………177 122C标准的内容………233 7.7习题 ,,, …177 123< stdio.h>的使用……252 124< stdio. h>的实现……274 第8章< set imp.h>……………181 125< stdio.h>的测试…… 8.1背景知识……………………181 126参考文献…………………325 82C标准的内容……………184 127习题………………………………“ 83< setjmp. h>的使用…… 185 第13章<Bta1ibh>…………331 84< setjmp.h>的实现………………………l87 85< setjmp. h>的测试…………………191 13.1背景知识…………………………31 86参考文献……………192 132C标准的内容………32 87习题 192 133<sta1ibh>的使用-…………342 134< stdlib.h>的实现……31 第9章< signal.h>……………………19313.5<taib.h的测试………….79 91背景知识…… …493 13.6参考文献… :379 92C标准的内容 …………………195 13.7习题……………………………382 93< slana1.h>的使用…… 94< signal,h>的实现…………19第14章< string,h… :385 9.5< sIgna1h>的测试…203 141背景知识……………………………385 96参考文献… ………………203 142C标准的内容………………386 97习题 203 14.3< string,h>的使用………………392 第10章< stdarg.h》…………………205 144< string. h>的实现…………………396 145< string,h>的测试…140 10.1背景知识…………………………205 146参考文献………409 10.2C标准的内容………………………207 14.7习题………………………………409 103< stdarg.h>的使用…… 208 10.4<dagh>的实现………211第15章time.h>……………………:413 105< stdarg.h>的测试………………212 413 10.6参考文献…………………… 212 15.1青景知识…………… 152C标准的内容……………………………414 10.7习题……………………… 214 153<time.h>的使用…………………418 第11章< stdce. h>…215154< time. h>的实现…422 11背景知识………………215 15.5<time.h>的测试………………440 Il2C标准的内容………………21715.6参考文献 …………………………441 113< stddef,h>的使用……………17 15.7习题……… 4 114ste.h>的实现2录A接口……143 11.5< stade2h>的测试…… 23 116参考文献… 附录B名字 ,45 ……23 11.7习题-…………………… 3 附录C术语 461 你想换 wwww.1thuan.con

...展开详情
试读 127P [C标准库].P.J.Plauger.扫描版.pdf )
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
livekins 非常好,正需要的资料
2016-10-25
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
[C标准库].P.J.Plauger.扫描版.pdf ) 44积分/C币 立即下载
1/127
[C标准库].P.J.Plauger.扫描版.pdf )第1页
[C标准库].P.J.Plauger.扫描版.pdf )第2页
[C标准库].P.J.Plauger.扫描版.pdf )第3页
[C标准库].P.J.Plauger.扫描版.pdf )第4页
[C标准库].P.J.Plauger.扫描版.pdf )第5页
[C标准库].P.J.Plauger.扫描版.pdf )第6页
[C标准库].P.J.Plauger.扫描版.pdf )第7页
[C标准库].P.J.Plauger.扫描版.pdf )第8页
[C标准库].P.J.Plauger.扫描版.pdf )第9页
[C标准库].P.J.Plauger.扫描版.pdf )第10页
[C标准库].P.J.Plauger.扫描版.pdf )第11页
[C标准库].P.J.Plauger.扫描版.pdf )第12页
[C标准库].P.J.Plauger.扫描版.pdf )第13页
[C标准库].P.J.Plauger.扫描版.pdf )第14页
[C标准库].P.J.Plauger.扫描版.pdf )第15页
[C标准库].P.J.Plauger.扫描版.pdf )第16页
[C标准库].P.J.Plauger.扫描版.pdf )第17页
[C标准库].P.J.Plauger.扫描版.pdf )第18页
[C标准库].P.J.Plauger.扫描版.pdf )第19页
[C标准库].P.J.Plauger.扫描版.pdf )第20页

试读结束, 可继续阅读

44积分/C币 立即下载