6.8 标准库函数
在ANSI C标准之前,不同的C系统都提供了库,其中包含许多常用功能函数,以及相关的类型与变量定义。随着发展,不同C系统所提供的库之间的差异也逐渐显露出来。为了提高C程序在不同系统之间的可移植性,ANSI 定义了C语言的标准库。
如果程序中只使用了标准库,那么这个程序就更容易移到另一C语言系统上,甚至移到另一种计算机上使用。如果在程序里使用了系统的扩充库,那么要将这样的程序搬到其他系统里使用,就需要做更多工作,需要修改所有使用特殊库的部分,将它们用新系统能够支持的方式重新编写。
因此,在开发C程序时,应当尽可能使用ANSI C标准库。如果必须使用具体C系统的特殊库功能,应该尽量将依赖于特殊功能的程序片段封装到一些小局部中。这种做法能保证最终程序具有较好的可移植性,在将程序转到其他系统时,需要做的工作仅仅是修改小局部中的代码。
标准库通常包含了一组标准头文件和一个或几个库函数代码文件。有关标准头文件的情况前面已有很多讨论,在写C程序时,只需用 #include预处理命令引入相关头文件,就可以保证程序里能够正确使用标准库功能了。
库代码文件里主要是各个标准函数的实际机器指令代码段,还有一些相关数据结构(一些实现标准库所需的变量等),可能还附带着一些为链接程序使用的信息。库文件都是二进制代码文件,其具体内容和形式都不是需要关心的。如果在一个程序中用到某些标准函数,在程序链接时,链接程序就会从库代码文件里提取出有关函数的代码和其他相关片段,将它们拼接到结果程序里,并完成所有调用的链接。
库代码文件通常是一个或者几个很大的文件,其中包含了所有库函数的定义。而在一个具体程序里,实际使用的库功能只是其中很少一部分。人们开发了这样的技术,在进行程序链接时,链接程序并不将库代码文件整个装配到可执行文件里,而是根据实际程序的需要,从库文件里提取出那些必要部分,只将这些部分装配进去。这样就保证了用户程序的紧凑性,避免程序中出现大量无用冗余代码段。
标准头文件在ANSI C语言定义里有明确规定。这是一组正文文件,它们的作用就是为使用标准库函数的源程序提供信息。在这些头文件里列出了各个库函数的原型,定义了库函数所使用的有关类型(如表示文件流的FILE结构类型等)和一些符号常量(如NULL)。通过预处理命令包含这些头文件,将使编译程序在处理程序时能得到所有必要的信息,这就可以保证程序中对标准库的使用与库文件里有关定义之间的一致性。
标准头文件通常存放在C语言系统的主目录下的一个子目录里,子目录的名字一般是include或inc。
从功能角度,ANSI C标准库的头文件可以分为
(1)字符类型函数
用于对字符按ASCII码分类:字母、数字、控制字符、分隔符、大小写字母等。
(2)转换函数
用于字符或字符串的转换;在字符量和各类数字量(整型、实型等)之间进行转换;在大小写之间进行转换。
(3)目录路径函数
用于文件目录和路径操作。
(4)诊断函数
用于内部错误检测。
(5)图形函数
用于屏幕管理和各种图形功能。
(6)输入/输出函数
用于完成输入/输出功能。
(7)接口函数
用于与DOS、BIOS和硬件的接口。
(8)字符串函数
用于字符串操作和处理。
(9)内存管理函数
用于内存管理。
(10)数学函数
用于数学函数计算。
(11)日期和时间函数
用于日期、时间转换操作。
(12)进程控制函数
用于进程管理和控制。
(13)其他函数
用于其他各种功能。
读者可以需要查询相应的资料。
常见的编程错误6.5
●函数形参和实参类型不一致。
●用分号终止函数首部行。
●函数形参必须说明类型。
●函数返回值的数据类型与函数的返回数据类型不一致。
●定义递归函数时没有指定递归的终止条件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。