注意:資料來(lái)源較早,以下使用float類型的函數(shù)參數(shù)目前已經(jīng)全部改為double。


數(shù)學(xué)函數(shù):

#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的余數(shù),x – x / y
float frexp(float x, int *exp);  //把x分解成尾數(shù)和2的指數(shù),返回?cái)?shù)是尾數(shù),exp是指數(shù)
float ldexp(float x, int exp);    //轉(zhuǎn)載浮點(diǎn)數(shù),返回x*2^exp的值
float modf(float x, float *i);   //將x分解成整數(shù)和小數(shù),返回值是小數(shù)部分,i是整數(shù)部分
float hypot(float x, float y);  //根據(jù)勾股定理返回斜邊
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



字符函數(shù):

#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是否為標(biāo)點(diǎn)符號(hào),指非字符數(shù)字,非空格的可打印字符
int isspace(int c);       //空白符指空格、制表符、換頁(yè)符、回車符、換行符
int isxdigit(int c);        //是否16進(jìn)制數(shù)字,指0-9、A-F、a-f之間的字符
int toascii(int c);         //將c轉(zhuǎn)換成ascii碼,即高位清零,僅保留低7位
int tolower(int c);
int toupper(int c);



動(dòng)態(tài)內(nèi)存分配:

#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);



字符串函數(shù):

#include <string.h>

void *memchr(void *buf, char ch, unsigned count);
//在buf所指內(nèi)存前count個(gè)字節(jié)查找字符ch,返回指向ch的指針或NULL
int memcmp(void *buf1, void *buf2, unsigned int count);
//比較buf1和buf2的前count個(gè)字節(jié),< = > 分別返回 <0 =0 >0
int memicmp(void *buf1, void *buf2, unsigned int count);
//比較buf1和buf2的前count個(gè)字節(jié),但不區(qū)分字母大小寫
void *memccpy(void *dest, void *src, unsigned char ch, unsigned int count);
//從src中復(fù)制不多于count個(gè)字節(jié)到dest,遇到字符ch則停止復(fù)制。返回指向ch后的第一個(gè)字符的指針,沒(méi)有遇到ch則返回NULL,注意ch也被復(fù)制
void *memcpy(void *dest, void *src, unsigned int count);
//從src中復(fù)制不多于count個(gè)字節(jié)到dest,返回指向dest的指針,注意dest和src不能重疊
void *memmove(void *dest, const void *src, unsigned int count);
//從src中復(fù)制不多于count個(gè)字節(jié)到dest,返回指向dest的指針,其中dest和src所指內(nèi)存區(qū)域可以重疊,但是src內(nèi)容會(huì)被更改
void *memeset(void *buffer, int c, int count);
//將buffer所指區(qū)域前count個(gè)字節(jié)設(shè)置成c字符,返回buffer指針

   //×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
   //分界線
   //×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

char *strcpy(char *dest, char *src);
// src所有字符串復(fù)制到dest中,兩者區(qū)域不可重疊,且dest必須要有足夠空間,返回dest指針
char *strncpy(char *dest, char *src, int n);
// src前n個(gè)字符復(fù)制到dest中,兩者區(qū)域不可重疊,且dest必須要有足夠空間,返回dest指針。如果src前n個(gè)字符不含"\0",則dest不以"\0"結(jié)束;如果src長(zhǎng)度小于n,則用"\0"填充dest直到n個(gè)字節(jié)復(fù)制完畢
char *strdup(char *s);
//函數(shù)內(nèi)malloc()分配空間,返回指向被復(fù)制的字符串的指針,需要在函數(shù)中人工free掉分配的空間

char *strcat(char *dest, char *src);
//聯(lián)接dest和src,dest改變,兩者區(qū)域不可重疊,且dest必須要有足夠空間,返回dest指針
char *strncat(char *dest, char *src, int c);
//聯(lián)接dest和src前n個(gè)字符,兩者區(qū)域不可重疊,且dest必須要有足夠空間,返回dest指針

int strcmp(char *s1, char *s2);
//比較s1和s2,< = > 分別為 <0 =0 >0
int strncmp(char *s1, char *s2, int n);
//比較s1和s2前n個(gè)字符,同上
int stricmp(char *s1, char *s2);
//比較s1和s2,不區(qū)分字符大小寫
int strnicmp(char *s1, char *s2, int n);
//比較s1和s2前n個(gè)字符,不區(qū)分字符大小寫

   char *strchr(char *s, char c);
//查找s中c的首次出現(xiàn)位置,返回c位置指針或者NULL

int strcspn(char *s1, char *s2);
//在s1中搜索s2中出現(xiàn)的字符,返回第一個(gè)出現(xiàn)在s1中的下標(biāo)值,亦即在s1中出現(xiàn)而s2中沒(méi)有出現(xiàn)的字符串長(zhǎng)度
char *strpbrk(char *s1, char *s2);
//在s1中搜索s2中出現(xiàn)的字符,返回第一個(gè)出現(xiàn)在s1中的字符指針或者NULL
   char *strstr(char *haystack, char *needle);
//從haystack中尋找needle第一次出現(xiàn)的位置,返回第一次出現(xiàn)的位置指針或者NULL

int strlen(char *s);
//返回s的長(zhǎng)度,不包括結(jié)束符NULL
char *strlwr(char *s);
//將s轉(zhuǎn)換為小寫字母形式,返回指向s的指針
char *strupr(char *s);
//將s轉(zhuǎn)換為大寫字母形式,返回指向s的指針
char *strrev(char *s);
//將s的所有字符順序顛倒過(guò)來(lái),不包括“\0”,返回s指針
char *strset(char *s, char c);
//將s的字符設(shè)置成字符c("\0"不變),返回s的指針