https://m.toutiaocdn.com/group/6704202508870353421/?app=news_article×tamp=1560948672&req_id=20190619205111010023029148742BCDF&group_id=6704202508870353421
C 語(yǔ)言的標(biāo)準(zhǔn)庫(kù)通常包含了一組標(biāo)準(zhǔn)頭文件和一個(gè)或幾個(gè)庫(kù)函數(shù)代碼文件。在寫(xiě) C 程序時(shí),只需使用 #include 預(yù)處理命令引入相關(guān)頭文件,就可以保證程序里能夠正確使用標(biāo)準(zhǔn)庫(kù)功能了。
在這些頭文件里列出了各個(gè)庫(kù)函數(shù)的原型,定義了庫(kù)函數(shù)所使用的有關(guān)類(lèi)型(如表示流的 FILE 結(jié)構(gòu)類(lèi)型等)和一些符號(hào)常量(如 EOF、NULL)。
標(biāo)準(zhǔn)頭文件包括:
C標(biāo)準(zhǔn)頭文件
下面是對(duì)每個(gè)標(biāo)準(zhǔn)庫(kù)所包含的函數(shù)功能的簡(jiǎn)單介紹。
stdio.h 即 standard input & output(標(biāo)準(zhǔn)輸入輸出)。在源代碼中如用到標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí),就要包含這個(gè)頭文件。
stdio.h所包含的函數(shù):
文件訪問(wèn):fopen、freopen、fflush、fclose
二進(jìn)制輸入/輸出:fread、fwrite
非格式化輸入/輸出:fgetc/getc、fputc/putc、ungetc、fgets、fputs
格式化輸入/輸出:scanf/fscanf/sscanf、printf/fprintf/sprintf、perror
文件定位:ftell、fseek、fgetpos、fsetpos、rewind
錯(cuò)誤處理:feof、ferror
文件操作:remove、rename、tmpfile
stdlib.h 即 standard library 標(biāo)準(zhǔn)庫(kù)頭文件。stdlib.h里面定義了五種類(lèi)型、一些宏和常用的系統(tǒng)函數(shù)。
類(lèi)型:size_t、wchar_t、div_t、ldiv_t和lldiv_t;
宏例:EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等;
常用的函數(shù):malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等。
int atoi(const char *nptr):表示 ascii to integer,把字符串轉(zhuǎn)換成整型數(shù);
long atol(const char *nptr):把字符串轉(zhuǎn)換成長(zhǎng)整型數(shù);
rand():產(chǎn)生隨機(jī)數(shù)的一個(gè)隨機(jī)函數(shù);
void srand(unsigned int seed):srand和rand()配合使用產(chǎn)生偽隨機(jī)數(shù)序列。
rand函數(shù)在產(chǎn)生隨機(jī)數(shù)前,需要系統(tǒng)提供的生成偽隨機(jī)數(shù)序列的種子,rand根據(jù)這個(gè)種子的值產(chǎn)生一系列隨機(jī)數(shù)。如果系統(tǒng)提供的種子沒(méi)有變化,每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列都是一樣的。srand通過(guò)參數(shù)seed改變系統(tǒng)提供的種子值,從而可以使得每次調(diào)用rand函數(shù)生成的偽隨機(jī)數(shù)序列不同,從而實(shí)現(xiàn)真正意義上的“隨機(jī)”。通??梢岳孟到y(tǒng)時(shí)間來(lái)改變系統(tǒng)的種子值,即srand(time(NULL)),可以為rand函數(shù)提供不同的種子值,進(jìn)而產(chǎn)生不同的隨機(jī)數(shù)序列
stddef.h 定義了一些標(biāo)準(zhǔn)宏和類(lèi)型,包括:
size_t(sizeof運(yùn)算符的結(jié)果類(lèi)型,無(wú)符號(hào)整型);
ptrdiff_t (兩個(gè)指針相減運(yùn)算的結(jié)果類(lèi)型,有符號(hào)整型);
wchar_t (寬字符類(lèi)型,整型);
指針常量 NULL(空指針值);
offsetof(type, member-designator) :獲得字段在結(jié)構(gòu)體中的偏移量。
無(wú)論包含哪個(gè)標(biāo)準(zhǔn)頭文件,都會(huì)自動(dòng)將<stddef.h>包含進(jìn)來(lái)。
ctype.h 定義了一批C語(yǔ)言字符分類(lèi)函數(shù)(C character classification functions),用于測(cè)試字符是否屬于特定的字符類(lèi)別,如字母字符、控制字符等。
int isalpha(char ch):檢查ch是否是字母;
int iscntrl(int ch):檢查ch是否控制字符(其ASCII碼在0和0x1F之間,數(shù)值為 0-31);
int isdigit(char ch):檢查ch是否是數(shù)字(0-9);
int islower(int ch):檢查ch是否小寫(xiě)字母(a-z);
int isupper(int ch):檢查ch是否是大寫(xiě)字母(A-Z);
int tolower(int ch):將ch字符轉(zhuǎn)換為小寫(xiě)字母;
int toupper(int ch):將ch字符轉(zhuǎn)換成大寫(xiě)字母;
int isspace(int ch):檢查ch是否是空格符、跳格符或換行符;
int isascii(int ch):測(cè)試參數(shù)是否是ASCII碼0-127;
關(guān)于字符數(shù)組的函數(shù)定義的頭文件,常用函數(shù)有strlen、strcmp、strcpy等。
char *strcpy(char *destin, char *source):拷貝一個(gè)字符串到另一個(gè);
char *strncpy(char *dest, char *src, size_t n):將字符串src中最多n個(gè)字符復(fù)制到字符數(shù)組dest中,它并不像strcpy一樣遇到NULL才停止復(fù)制,而是等湊夠n個(gè)字符才開(kāi)始復(fù)制;
char *strcat(char *destin, char *source):字符串拼接函數(shù);
char *strrev(char *str):字符串倒轉(zhuǎn);
char *strchr(char *str, char c):在一個(gè)串中查找給定字符的第一個(gè)匹配之處;
size_tstrlen(const char *s):求字符串的長(zhǎng)度,從字符串的首地址開(kāi)始到遇到第一個(gè)'\0'停止計(jì)數(shù);
int strcmp(char *str1, char *str2):字符串比較,看ASCII 碼,str1>str2,返回值 > 0;兩串相等,返回0;
聯(lián)系客服