库函数(Library function)是将函数封装入库,供用户使用的一种方式。方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。调用的时候把它所在的文件名用#include<>加到里面就可以了。一般是放到lib文件里的。
简介
一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数。
由于版权原因,库函数的源代码一般是不可见的,但在头文件中你可以看到它对外的接口库函数简介。
C语言的语句十分简单,如果要使用C语言的语句直接计算sin或cos函数,就需要编写颇为复杂的程序。因为C语言的语句中没有提供直接计算sin或cos函数的语句。又如为了显示一段文字,我们在C语言中也找不到显示语句,只能使用库函数printf。
C语言的库函数并不是C语言本身的一部分,它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。C的库函数极大地方便了用户,同时也补充了C语言本身的不足。事实上,在编写C语言程序时,应当尽可能多地使用库函数,这样既可以提高程序的运行效率,又可以提高编程的质量。
这里调用的是静态库。
基本概念
函数库:函数库是由系统建立的具有一定功能的函数的集合。库中存放函数的名称和对应的
目标代码,以及连接过程中所需的
重定位信息。用户也可以根据自己的需要建立自己的用户函数库。
库函数:存放在函数库中的函数。库函数具有明确的功能、入口调用参数和返回值。
头文件:有时也称为包含文件。
C语言库函数与
用户程序之间进行信息通信时要使用的数据和
变量,在使用某一库函数时,都要在程序中嵌入(用#include)该函数对应的头文件。
由于C语言
编译系统应提供的函数库尚无国际标准。不同版本的C语言具有不同的库函数,用户使用时应查阅有关版本的C的库函数参考手册。我们以Turbo C为例简介一下C的库函数,并附录中给出了Turbo C的部分常用库函数。
分类
(1)I/O 函数。包括各种控制台I/O、缓冲型文件I/O和UNIX式非缓冲型文件
I/O操作。
例如: getchar,putchar,printf,scanf,fopen,fclose,fgetc,fgets,fprintf,fsacnf,fputc,fputs,fseek,fread,fwrite等。
(2)字符串、内存和字符函数。包括对
字符串进行各种操作和对字符进行操作的函数。
需要的包含文件:
string.h、mem.h、
ctype.h或string.h
例如:用于检查字符的函数:isalnum,isalpha,isdigit,islower,isspace等。用于字符串操作函数:strcat,strchr,strcmp,strcpy,strlen,strstr等。
(3)数学函数。包括各种常用的三角函数、双曲线函数、指数和对数函数等。
例如:sin,cos,exp(e的x次方),log,sqrt(开平方),pow(x的y次方)等。
(4)时间、日期和与系统有关的函数。对时间、日期的操作和设置计算机系统状态等。
需要的包含文件:time.h
例如:time返回系统的时间;asctime返回以字符串形式表示的日期和时间。
例如:calloc,free,malloc,realloc等。
(6)目录管理。包括磁盘目录建立、查询、改变等操作的函数。
(7)过程控制。包括最基本的过程控制函数。
(8)字符屏幕和图形功能。包括各种绘制点、线、圆、方和填色等的函数。
(9)其它函数。
内容
①函数的功能及所能完成的操作
②参数的数目和顺序,以及每个参数的意义及类型
③返回值的意义及类型
④需要使用的包含文件
这是要正确使用库函数的必要条件。
相关区别
(1)库函数是语言或应用程序的一部分,而系统调用是内核提供给应用程序的接口,属于系统的一部分
(2)库函数在用户地址空间执行,系统调用是在内核地址空间执行,库函数运行时间属于用户时间,系统调用属于系统时间,库函数开销较小,系统调用开销较大
(3)库函数是有缓冲的,系统调用是无缓冲的
(4)系统调用依赖于平台,库函数并不依赖
内置函数库
1、C语言与
C语言库函数的关系就类似于汉字与经典著作的关系。C语言是一种
计算机编程语言,
C语言函数库是由C语言编写出来的文献。方便后来者们更加简单快捷的使用C语言。
2、C语言是一种程序设计的入门语言。由于C语言的语句中没有提供直接计算sin或cos函数的语句,会造成编写程序困难;但是函数库提供了sin和cos函数,可以拿来直接调用。显示一段文字,我们在C语言中找不到显示语句,只能使用库函数printf。C语言的库函数并不是C语言本身的一部分,它是由编译程序根据一般用户的需要,编制并提供用户使用的一组程序。C的库函数极大地方便了用户,同时也补充了C语言本身的不足。在编写C语言程序时,使用库函数,既可以提高程序的运行效率,又可以提高编程的质量。