日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > strongerHuang
[導(dǎo)讀]關(guān)注、星標(biāo)公眾號,不錯過精彩內(nèi)容 素材來源:網(wǎng)絡(luò) 編輯整理:strongerHuang 有很多工程師喜歡自己封裝一些標(biāo)準(zhǔn)庫已有的函數(shù),其實自己封裝的函數(shù),并不一定比標(biāo)準(zhǔn)庫好,有時候反而代碼更冗余,且有bug。下面就來分享一下C語言常見的一些標(biāo)準(zhǔn)庫。 標(biāo)準(zhǔn)頭文件


關(guān)注、星標(biāo)公眾,不錯過精彩內(nèi)容

素材來源:網(wǎng)絡(luò)
編輯整理:strongerHuang


有很多工程師喜歡自己封裝一些標(biāo)準(zhǔn)庫已有的函數(shù),其實自己封裝的函數(shù),并不一定比標(biāo)準(zhǔn)庫好,有時候反而代碼更冗余,且有bug。下面就來分享一下C語言常見的一些標(biāo)準(zhǔn)庫。


標(biāo)準(zhǔn)頭文件包括:

<asset.h> <ctype.h> <errno.h> <float.h> <limits.h> <locale.h> <math.h> <setjmp.h> <signal.h> <stdarg.h> <stddef.h> <stdlib.h><stdio.h> <string.h> <time.h>


一、標(biāo)準(zhǔn)定義(<stddef.h>) 

文件<stddef.h>里包含了標(biāo)準(zhǔn)庫的一些常用定義,無論我們包含哪個標(biāo)準(zhǔn)頭文件,<stddef.h>都會被自動包含進(jìn)來。


這個文件里定義:

類型size_t(sizeof運(yùn)算符的結(jié)果類型,是某個無符號整型);


類型ptrdiff_t(兩個指針相減運(yùn)算的結(jié)果類型,是某個有符號整型);


類型wchar_t(寬字符類型,是一個整型,其中足以存放本系統(tǒng)所支持的所有本地環(huán)境中的字符集的所有編碼值。這里還保證空字符的編碼值為0);


符號常量NULL(空指針值);


宏offsetor (這是一個帶參數(shù)的宏,第一個參數(shù)應(yīng)是一個結(jié)構(gòu)類型,第二個參數(shù)應(yīng)是結(jié)構(gòu)成員名。

offsetor(s,m)

求出成員m在結(jié)構(gòu)類型t的變量里的偏移量)。


注:其中有些定義也出現(xiàn)在其他頭文件里(如NULL)。


二、錯誤信息(<errno.h>)

<errno.h>定義了一個int類型的表達(dá)式errno,可以看作一個變量,其初始值為0,一些標(biāo)準(zhǔn)庫函數(shù)執(zhí)行中出錯時將它設(shè)為非0值,但任何標(biāo)準(zhǔn)庫函數(shù)都設(shè)置它為0。


<errno.h>里還定義了兩個宏EDOM和ERANGE,都是非0的整數(shù)值。數(shù)學(xué)函數(shù)執(zhí)行中遇到參數(shù)錯誤,就會將errno置為EDOM,如出現(xiàn)值域錯誤就會將errno置為ERANGE。


三、輸入輸出函數(shù)(<stdio.h>)

文件打開和關(guān)閉:

FILE *fopen(const char *filename, const char *mode);int fclose(FILE * stream);


字符輸入輸出:
int fgetc(FILE *fp);int fputc(int c, FILE *fp);


getc和putc與這兩個函數(shù)類似,但通過宏定義實現(xiàn)。通常有下面定義:
#define getchar() getc(stdin)#define putchar(c) putc(c, stdout)int ungetc(int c, FILE* stream); //把字符 c 退回流 stream


格式化輸入輸出:

int scanf(const char *format, ...);int printf(const char *format, ...);int fscanf(FILE *stream, const char *format, ...);int fprintf(FILE *stream, const char *format, ...);int sscanf(char *s, const char *format, ...);int sprintf(char *s, const char *format, ...);


行式輸入輸出:

char *fgets(char *buffer, int n, FILE *stream);int fputs(const char *buffer, FILE *stream);char *gets(char *s);int puts(const char *s);


直接輸入輸出:

size_t fread(void *pointer, size_t size, size_t num, FILE *stream);size_t fwrite(const void *pointer, size_t size, size_t num, FILE *stream);


四、數(shù)學(xué)函數(shù)(<math.h>)

1.三角函數(shù):

三角函數(shù)

sin

cos

tan

反三角函數(shù)

asin

acos

atan

雙曲函數(shù)

sinh

cosh

tanh



2.指數(shù)和對數(shù)函數(shù):

e為底的指數(shù)函數(shù)

exp

自然對數(shù)函數(shù)

log

10為底的對數(shù)函數(shù)

log10



3.其他函數(shù):

平方根

sqrt

絕對值

fabs

乘冪,第一個參數(shù)作為底,第二個是指數(shù)

double pow(double, double)

實數(shù)的余數(shù),兩個參數(shù)分別是被除數(shù)和除數(shù)

double fmod(double, double)



注:所有上面未給出類型特征的函數(shù)都取一個參數(shù),其參數(shù)與返回值都是double類型。


下面函數(shù)返回雙精度值(包括函數(shù)ceil和floor)。在下表里,除其中有特別說明的參數(shù)之外,所有函數(shù)的其他參數(shù)都是double類型。

函數(shù)原型

意義解釋

ceil(x)

求出不小于x的最小整數(shù)(返回與這個整數(shù)對應(yīng)的double值)

floor(x)

求出不大于x的最大整數(shù)(返回與這個整數(shù)對應(yīng)的double值)

atan2(y, x)

求出 tan-1(y/x),其值的范圍是[-pai,pai] 

ldexp(x, int n)

求出x*2n

frexp(x, int *exp)

 x分解為 y*2n, 是位于區(qū)間 [1/2,1)里的一個小數(shù),作為函數(shù)結(jié)果返回,整數(shù)通過指針*exp返回(應(yīng)提供一個int變量地址)。當(dāng)0時這兩個結(jié)果的值都是0

modf(x, double

*ip)

x分解為小數(shù)部分和整數(shù)部分,小數(shù)部分作為函數(shù)返回值,整數(shù)部分通過指針*ip返回。


五、字符處理函數(shù)(<ctype.h>)

見下表:

int isalpha(c)

c是字母字符

int isdigit(c)

c是數(shù)字字符

int isalnum(c)

c是字母或數(shù)字字符

int isspace(c)

c是空格、制表符、換行符

int isupper(c)

c是大寫字母

int islower(c)

c是小寫字母

int iscntrl(c)

c是控制字符

int isprint(c)

c是可打印字符,包括空格

int isgraph(c)

c是可打印字符,不包括空格

int isxdigit(c)

c是十六進(jìn)制數(shù)字字符

int ispunct(c)

c是標(biāo)點(diǎn)符號

int tolower(int c)

當(dāng)c是大寫字母時返回對應(yīng)小寫字母,否則返回c本身

int toupper(int c)

當(dāng)c是小寫字母時返回對應(yīng)大寫字母,否則返回c本身


注:條件成立時這些函數(shù)返回非0值。最后兩個轉(zhuǎn)換函數(shù)對于非字母參數(shù)返回原字符。


六、字符串函數(shù)(<string.h>)

1.字符串函數(shù)

所有字符串函數(shù)列在下表里,函數(shù)描述采用如下約定:s、t表示 (char *)類型的參數(shù),cs、ct表示(const char*)類型的參數(shù)(它們都應(yīng)表示字符串)。n表示size_t類型的參數(shù)(size_t是一個無符號的整數(shù)類型),c是整型參數(shù)(在函數(shù)里轉(zhuǎn)換到char):

函數(shù)原型

意義解釋

size_t strlen(cs)

求出cs的長度

char *strcpy(s,ct)

把ct復(fù)制到s。要求s指定足夠大的字符數(shù)組

char *strncpy(s,ct,n)

把ct里的至多n個字符復(fù)制到s。要求s指定一個足夠大的字符數(shù)組。如果ct里的字符不夠n個,就在s里填充空字符。

char *strcat(s,ct)

把ct里的字符復(fù)制到s里已有的字符串之后。s應(yīng)指定一個保存著字符串,而且足夠大的字符數(shù)組。

char *strncat(s,ct,n)

把ct里的至多n個字符復(fù)制到s里已有的字符串之后。s應(yīng)指定一個保存著字符串,而且足夠大的字符數(shù)組。

int strcmp(cs,ct)

比較字符串cs和ct的大小,在cs大于、等于、小于ct時分別返回正值、0、負(fù)值。

int strncmp(cs,ct,n)

比較字符串cs和ct的大小,至多比較n個字符。在cs大于、等于、小于ct時分別返回正值、0、負(fù)值。

char *strchr(cs,c)

在cs中查尋c并返回c第一個出現(xiàn)的位置,用指向這個位置的指針表示。當(dāng)cs里沒有c時返回值NULL

char *strrchr(cs,c)

在cs中查尋c并返回c最后一個出現(xiàn)的位置,沒有時返回NULL

size_t strspn(cs,ct)

由cs起確定一段全由ct里的字符組成的序列,返回其長度

size_t strcspn(cs,ct)

由cs起確定一段全由非ct里的字符組成的序列,返回其長度

char *strpbrk(cs,ct)

在cs里查尋ct里的字符,返回第一個滿足條件的字符出現(xiàn)的位置,沒有時返回NULL

char *strstr(cs,ct)

在cs中查尋串ct(查詢子串),返回ct作為cs的子串的第一個出現(xiàn)的位置,ct未出現(xiàn)在cs里時返回NULL

char *strerror(n)

返回與錯誤編號n相關(guān)的錯誤信息串(指向該錯誤信息串的指針)

char *strtok(s,ct)

在s中查尋由ct中的字符作為分隔符而形成的單詞


2.存儲區(qū)操作

<string.h>還有一組字符數(shù)組操作函數(shù)(存儲區(qū)操作函數(shù)),名字都以mem開頭,以某種高效方式實現(xiàn)。在下面原型中,參數(shù)s和t的類型是(void *),cs和ct的類型是(const void *),n的類型是size_t,c的類型是int(轉(zhuǎn)換為unsigned char)。

函數(shù)原型

意義解釋

void *memcpy(s,ct,n)

從ct處復(fù)制n個字符到s處,返回s

void *memmove(s,ct,n)

從ct處復(fù)制n個字符到s處,返回s,這里的兩個段允許重疊

int memcmp(cs,ct,n)

比較由cs和ct開始的n個字符,返回值定義同strcmp

void *memchr(cs,c,n)

在n個字符的范圍內(nèi)查尋c在cs中的第一次出現(xiàn),如果找到,返回該位置的指針值,否則返回NULL

void *memset(s,c,n)

將s的前n個字符設(shè)置為c,返回s


七、功能函數(shù)(<stdlib.h>)

1.隨機(jī)數(shù)函數(shù):

函數(shù)原型

意義解釋

int rand(void)

生成一個0到RAND_MAX的隨機(jī)整數(shù)

void srand(unsigned seed)

用seed為隨后的隨機(jī)數(shù)生成設(shè)置種子值


2.動態(tài)存儲分配函數(shù):

函數(shù)原型

意義解釋

void *calloc(size_t n, size_t size)

分配一塊存儲,其中足以存放n個大小為size的對象,并將所有字節(jié)用0字符填充。返回該存儲塊的地址。不能滿足時返回NULL

void *malloc(size_t size)

分配一塊足以存放大小為size的存儲,返回該存儲塊的地址,不能滿足時返回NULL

void *realloc(void *p, size_t size)

將p所指存儲塊調(diào)整為大小size,返回新塊的地址。如能滿足要求,新塊的內(nèi)容與原塊一致;不能滿足要求時返回NULL,此時原塊不變

void free(void *p)

釋放以前分配的動態(tài)存儲塊


3.幾個整數(shù)函數(shù)

幾個簡單的整數(shù)函數(shù)見下表,div_t和ldiv_t是兩個預(yù)定義結(jié)構(gòu)類型,用于存放整除時得到的商和余數(shù)。div_t類型的成分是int類型的quot和rem,ldiv_t類型的成分是long類型的quot和rem。

函數(shù)原型

意義解釋

int abs(int n)

求整數(shù)的絕對值

long labs(long n)

求長整數(shù)的絕對值

div_t div(int n, int m)

求n/m,商和余數(shù)分別存放到結(jié)果結(jié)構(gòu)的對應(yīng)成員里

ldiv_t ldiv(long n, long m)

同上,參數(shù)為長整數(shù)



4.數(shù)值轉(zhuǎn)換

函數(shù)原型

意義解釋

double atof(const char *s)

由串s構(gòu)造一個雙精度值

int atoi(const char *s)

由串s構(gòu)造一個整數(shù)值

long atol(const char *s)

由串s構(gòu)造一個長整數(shù)值



5.執(zhí)行控制

1)非正常終止函數(shù)abort。

原型是: 

void abort(void);

2)正常終止函數(shù)exit。

原型是:

void exit(int status);


導(dǎo)致程序按正常方式立即終止。status作為送給執(zhí)行環(huán)境的出口值,0表示成功結(jié)束,兩個可用的常數(shù)為EXIT_SUCCESS,EXIT_FAILURE。


3)正常終止注冊函數(shù)atexit。

原型是:

int atexit(void (*fcn)(void))


可用本函數(shù)把一些函數(shù)注冊為結(jié)束動作。被注冊函數(shù)應(yīng)當(dāng)是無參無返回值的函數(shù)。注冊正常完成時atexit返回值0,否則返回非零值。


6.與執(zhí)行環(huán)境交互

1)向執(zhí)行環(huán)境傳送命令的函數(shù)system。

 原型是:

int system(const char *s);


把串s傳遞給程序的執(zhí)行環(huán)境要求作為系統(tǒng)命令執(zhí)行。如以NULL為參數(shù)調(diào)用,函數(shù)返回非0表示環(huán)境里有命令解釋器。如果s不是NULL,返回值由實現(xiàn)確定。


2)訪問執(zhí)行環(huán)境的函數(shù)getenv。

原型是:

char *getenv(const char *s);


從執(zhí)行環(huán)境中取回與字符串s相關(guān)聯(lián)的環(huán)境串。如果找不到就返回NULL。本函數(shù)的具體結(jié)果由實現(xiàn)確定。在許多執(zhí)行環(huán)境里,可以用這個函數(shù)去查看“環(huán)境變量”的值。


7.常用函數(shù)bsearch和qsort

1)二分法查找函數(shù)bsearch:

void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*cmp)(const void *keyval, const void *datum));


函數(shù)指針參數(shù)cmp的實參應(yīng)是一個與字符串比較函數(shù)strcmp類似的函數(shù),確定排序的順序,當(dāng)?shù)谝粋€參數(shù)keyval比第二個參數(shù)datum大、相等或小時分別返回正、零或負(fù)值。


2)快速排序函數(shù)qsort:


qsort對于比較函數(shù)cmp的要求與bsearch一樣。設(shè)有數(shù)組base[0],...,base[n-1],元素大小為size。用qsort可以把這個數(shù)組的元素按cmp確定的上升順序重新排列。

void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *));

免責(zé)聲明:本文部分素材來源網(wǎng)絡(luò),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請與我聯(lián)系刪除。

推薦閱讀:

模擬電路中常用電阻參數(shù)詳解

USB 2.0 網(wǎng)絡(luò)、傳輸、通訊和協(xié)議

分享5個基本Linux命令行工具的替代品


關(guān)注 微信公眾號『strongerHuang』,后臺回復(fù)“1024”查看更多內(nèi)容,回復(fù)“加群”按規(guī)則加入技術(shù)交流群。


長按前往圖中包含的公眾號關(guān)注

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉