注意:资料来源较早,以下使用float类型的函数参数目前已经全部改为double。


数学函数:

#include <math.h>

int abs(int x);
float fabs(float x);
float sin(float x);
float asin(float x);          //x in [-1.0, 1.0]
float cos(float x);
float acos(float x);         //x in [-1.0, 1.0]
float tan(float x);
float atan(float x);
float atan2(float x, float y);  //求x/y的反正切值
float sinh(float x);                 //求x的双曲正弦值,(e^x – e^(-x)) / 2
float cosh(float x);                //求x的双曲余弦值,(e^x + e^(-x) / 2)
float tanh(float x);                //求x的双曲正切值,(e^x – e^(-x)) / (e^x + e^(-x))
float ceil(float x);
float floor(float x);
float exp(float x);
float fmod(float x, float y);     //求x/y的余数,x – x / y
float frexp(float x, int *exp);  //把x分解成尾数和2的指数,返回数是尾数,exp是指数
float ldexp(float x, int exp);    //转载浮点数,返回x*2^exp的值
float modf(float x, float *i);   //将x分解成整数和小数,返回值是小数部分,i是整数部分
float hypot(float x, float y);  //根据勾股定理返回斜边
float log(float x);                     //x > 0
float log10(float x);                 //x > 0
float pow(float x, float y);     //x > 0
float sqrt(float x);                   //x > 0



字符函数:

#include <ctype.h>

int isalnum(int c);       //判断是否为0-9、a-z、A-z中的字符
int isalpha(int c);
int isaldigit(int c);
int iscntrl(int c);         //判断c是否为控制字符,0X00-0X1F之间或0X7F(DEL)
int islower(int c);
int isupper(int c);
int isascii(int c);         //判断是否为ASCII码,指0X00-0X7F之间的字符
int isgraph(int c);        //c是否为除空格之外的可打印字符,指0X21-0X7E
int isprint(int c);         //c是否为可打印字符,包含空格,指0x20-0x7E
int ispunct(int c);        //c是否为标点符号,指非字符数字,非空格的可打印字符
int isspace(int c);       //空白符指空格、制表符、换页符、回车符、换行符
int isxdigit(int c);        //是否16进制数字,指0-9、A-F、a-f之间的字符
int toascii(int c);         //将c转换成ascii码,即高位清零,仅保留低7位
int tolower(int c);
int toupper(int c);



动态内存分配:

#include <stdlib.h>

void *malloc(unsigned int num_bytes);
void *realloc(void *mem_address, unsigned int newsize);
void *alloc(int num_elems, int elem_size);



字符串函数:

#include <string.h>

void *memchr(void *buf, char ch, unsigned count);
//在buf所指内存前count个字节查找字符ch,返回指向ch的指针或NULL
int memcmp(void *buf1, void *buf2, unsigned int count);
//比较buf1和buf2的前count个字节,< = > 分别返回 <0 =0 >0
int memicmp(void *buf1, void *buf2, unsigned int count);
//比较buf1和buf2的前count个字节,但不区分字母大小写
void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count);
//从src中复制不多于count个字节到dest,遇到字符ch则停止复制。返回指向ch后的第一个字符的指针,没有遇到ch则返回NULL,注意ch也被复制
void *memcpy(void *dest, void *src, unsigned int count);
//从src中复制不多于count个字节到dest,返回指向dest的指针,注意dest和src不能重叠
void *memmove(void *dest, const void *src, unsigned int count);
//从src中复制不多于count个字节到dest,返回指向dest的指针,其中dest和src所指内存区域可以重叠,但是src内容会被更改
void *memeset(void *buffer, int c, int count);
//将buffer所指区域前count个字节设置成c字符,返回buffer指针

   //×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
   //分界线
   //×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

char *strcpy(char *dest, char *src);
// src所有字符串复制到dest中,两者区域不可重叠,且dest必须要有足够空间,返回dest指针
char *strncpy(char *dest, char *src, int n);
// src前n个字符复制到dest中,两者区域不可重叠,且dest必须要有足够空间,返回dest指针。如果src前n个字符不含"\0",则dest不以"\0"结束;如果src长度小于n,则用"\0"填充dest直到n个字节复制完毕
char *strdup(char *s);
//函数内malloc()分配空间,返回指向被复制的字符串的指针,需要在函数中人工free掉分配的空间

char *strcat(char *dest, char *src);
//联接dest和src,dest改变,两者区域不可重叠,且dest必须要有足够空间,返回dest指针
char *strncat(char *dest, char *src, int c);
//联接dest和src前n个字符,两者区域不可重叠,且dest必须要有足够空间,返回dest指针

int strcmp(char *s1, char *s2);
//比较s1和s2,< = > 分别为 <0 =0 >0
int strncmp(char *s1, char *s2, int n);
//比较s1和s2前n个字符,同上
int stricmp(char *s1, char *s2);
//比较s1和s2,不区分字符大小写
int strnicmp(char *s1, char *s2, int n);
//比较s1和s2前n个字符,不区分字符大小写

   char *strchr(char *s, char c);
//查找s中c的首次出现位置,返回c位置指针或者NULL

int strcspn(char *s1, char *s2);
//在s1中搜索s2中出现的字符,返回第一个出现在s1中的下标值,亦即在s1中出现而s2中没有出现的字符串长度
char *strpbrk(char *s1, char *s2);
//在s1中搜索s2中出现的字符,返回第一个出现在s1中的字符指针或者NULL
   char *strstr(char *haystack, char *needle);
//从haystack中寻找needle第一次出现的位置,返回第一次出现的位置指针或者NULL

int strlen(char *s);
//返回s的长度,不包括结束符NULL
char *strlwr(char *s);
//将s转换为小写字母形式,返回指向s的指针
char *strupr(char *s);
//将s转换为大写字母形式,返回指向s的指针
char *strrev(char *s);
//将s的所有字符顺序颠倒过来,不包括“\0”,返回s指针
char *strset(char *s, char c);
//将s的字符设置成字符c("\0"不变),返回s的指针