标准库提供了很多功能各异的函数
不同的头文件中声明了功能各不相同的库函数,不同的库函数的实现有时也需要借助其他的库函数
一般情况只供标准库中其他函数使用的名字以下划线开始,防止与用户程序中的名字冲突,所有标准库都遵循该约定
以下对其中一些特别有用的函数做一个简要概述,更多详细信息参见网上的文档

字符串操作函数

此类函数一般在头文件<string.h>中定义
下面的各个函数中,s与t是char*类型,c与n是int类型
注意s和t的返回,避免发生越界错误

strcat(s,t) 将t指向的字符串连接到s指向的字符串的末尾
strncat(s,t,n) 将t指向的字符串中前n个字符连接到s指向的字符串的末尾
strcpy(s,t) 将t指向的字符串复制到s指向的位置
strncpy(s,t,n) 将t指向的字符串中前n个字符复制到s指向的位置
strcmp(s,t) 根据s指向的字符串小于(s<t)、等于(s==t)或大于(s>t)t指向的字符串的不同情况,分别返回负整数、0或正整数
strncmp(s,t,n) 同strcmp相同,但只在前n个字符中比较
strlen(s) 返回s指向的字符串的长度
strchr(s,c) 在s指向的字符串中查找c,若找到,则返回指向它第一次出现的位置的指针,否则返回NULL
strrchr(s,c) 在s指向的字符串中查找c,若找到,则返回指向它最后一次出现的位置的指针,否则返回NULL

字符类别测试和转换函数

此类函数一般在头文件<ctype.h>中定义
下面的各个函数中,c是一个可表示为unsigned char类型或EOF的int类型,函数的返回值类型为int

isalpha© 若c是字母,则返回一个非0值,否则返回0
isupper© 若c是大写字母,则返回一个非0值,否则返回0
islower© 若c是小写字母,则返回一个非0值,否则返回0
isdigit© 若c是数字,则返回一个非0值,否则返回0
isalnum© 若isalpha©或isdigit©,则返回一个非0值,否则返回0
isspace© 若c是空格、横向制表符、换行符、回车符、换页符或纵向制表符,则返回一个非0值,否则返回0
toupper© 返回c的大写形式
tolower© 返回c的小写形式

字符输入输出函数

int ungetc(int c,FILE*fp) 将字符c写回到文件fp中,如果执行成功则返回c,否则返回EOF,每个文件只能接收一个写回字符

命令执行函数

函数system(char*s)执行包含在字符串s中的命令,然后继续执行当前程序
s的内容在很大程度上与所用的操作系统有关

如:在UNIX操作系统环境中,system("date")将执行程序date,它将在标准输出上打印当天的日期和时间

system函数返回一个整型的状态值,其值来自于执行的命令,并同具体系统有关,在UNIX系统中返回的状态是exit的返回值

存储管理函数

函数malloc和calloc用于动态地分配存储块

voidmalloc(size_t n) 当分配成功时返回一个指针,该指针指向n字节长度的未初始化的存储空间,否则返回NULL
void
calloc(size_t n,size_t size) 当分配成功时返回一个指针,该指针指向足以容纳n个指定长度的对象组成的数组,否则返回NULL
free§释放p指向的存储空间,其中p是此前通过调用malloc或calloc函数得到的指针

数学函数

头文件<math.h>中声明了20多个数学函数,下面介绍一些常用的数学函数
每个函数带有一个或两个double类型的参数,并返回一个double类型的值

sin(x) x的正弦函数,其中x用弧度表示
cos(x) x的余弦函数,其中x用弧度表示
atan2(y,x) y/x的反正切函数,其中,x和y用弧度表示
exp(x) 指数函数e^x
log(x) x的自然对数(以e为底),其中,x>0
log10(x) x的常用对数(以10为底),其中,x>0
pow(x,y) 计算x^y的值
sqrt(x) x的平方根(x>=0)
fabs(x) x的绝对值

随机数发生器函数

函数rand()生成介于0和RAND_MAX之间的伪随机整数序列,其中RAND_MAX是在头文件<stdlib.h>中定义的符号常量

如:#define frand() ((double)rand()/(RAND_MAX+1.0))是一种生成大于等于0但小于1的随机浮点数的典型方法

(如果所用的函数库中已经提供了一个生成随机浮点数的函数,那么它可能比上面这个函数具有更好的统计学特性)

函数srand(unsigned)设置rand函数的种子数