第 25 章 C标准库

目录

1. 字符串操作函数

1.1. 初始化字符串

1.2. 取字符串的长度

1.3. 拷贝字符串

1.4. 连接字符串

1.5. 比较字符串

1.6. 搜索字符串

1.7. 分割字符串

2. 标准I/O库函数

2.1. 文件的基本概念

2.2. fopen/fclose

2.3. stdin/stdout/stderr

2.4. errno与perror函数

2.5. 以字节为单位的I/O函数

2.6. 操作读写位置的函数

2.7. 以字符串为单位的I/O函数

2.8. 以记录为单位的I/O函数

2.9. 格式化I/O函数

2.10. C标准库的I/O缓冲区

2.11. 本节综合练习

3. 数值字符串转换函数

4. 分配内存的函数

在前面的各章中我们已经见过C标准库的一些用法,总结如下:

总结一下,Linux平台提供的C标准库包括:

  • 一组头文件,定义了很多类型和宏,声明了很多库函数。这些头文件放在哪些目录下取决于不同的编译器,在我的系统上,stdarg.hstddef.h位于/usr/lib/gcc/i486-linux-gnu/4.3.2/include目录下,stdio.hstdlib.htime.hmath.hassert.h位于/usr/include目录下。C99标准定义的头文件有24个,本书只介绍其中最基本、最常用的几个。

  • 一组库文件,提供了库函数的实现。大多数库函数在libc共享库中,有些库函数在另外的共享库中,例如数学函数在libm中。在第 4 节 “共享库”讲过,通常libc共享库是/lib/libc.so.6,而我的系统启用了hwcap机制,libc共享库是/lib/tls/i686/cmov/libc.so.6

本章介绍另外一些最基本和最常用的库函数(包括一些不属于C标准但在UNIX平台上很常用的函数),写这一章是为了介绍字符串操作和文件操作的基本概念,而不是为了写一本C标准库函数的参考手册,Man Page已经是一本很好的手册了,读者学完这一章之后在开发时应该查阅Man Page,而不是把我这一章当参考手册来翻,所以本章不会面面俱到介绍所有的库函数,对于本章讲到的函数有些也不会讲得很细,因为我假定读者经过上一章的学习再结合我讲过的基本概念已经能看懂相关的Man Page了。很多技术书的作者给自己的书太多定位,既想写成一本入门教程,又想写成一本参考手册,我觉得这样不好,读者过于依赖技术书就失去了看真正的手册的能力。