色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言的一些常用標準庫分享

Wildesbeast ? 來源:21IC ? 作者:21IC ? 2020-11-22 11:54 ? 次閱讀

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

標準頭文件包括:

一、標準定義()

文件里包含了標準庫的一些常用定義,無論我們包含哪個標準頭文件,都會被自動包含進來。

這個文件里定義:

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

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

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

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

宏offsetot (這是一個帶參數(shù)的宏,第一個參數(shù)應是一個結構類型,第二個參數(shù)應是結構成員名。

offsetot(s,m)

求出成員m在結構類型t的變量里的偏移量)。

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

二、錯誤信息()

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

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

三、輸入輸出函數(shù)()

文件打開和關閉:

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ù)學函數(shù)()

1.三角函數(shù):

三角函數(shù)sincostan

反三角函數(shù)asinacosatan

雙曲函數(shù)sinhcoshtanh

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ù)對應的double值)

floor(x)求出不大于x的最大整數(shù)(返回與這個整數(shù)對應的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ù)結果返回,整數(shù)n 通過指針*exp返回(應提供一個int變量地址)。當x 為0時這兩個結果的值都是0

modf(x, double

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

五、字符處理函數(shù)()

見下表:

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是十六進制數(shù)字字符

int ispunct(c)c是標點符號

int tolower(int c)當c是大寫字母時返回對應小寫字母,否則返回c本身

int toupper(int c)當c是小寫字母時返回對應大寫字母,否則返回c本身

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

六、字符串函數(shù)()

1.字符串函數(shù)

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

函數(shù)原型意義解釋

size_t strlen(cs)求出cs的長度

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

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

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

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

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

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

char *strchr(cs,c)在cs中查尋c并返回c第一個出現(xiàn)的位置,用指向這個位置的指針表示。當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相關的錯誤信息串(指向該錯誤信息串的指針)

char *strtok(s,ct)在s中查尋由ct中的字符作為分隔符而形成的單詞

2.存儲區(qū)操作

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

函數(shù)原型意義解釋

void *memcpy(s,ct,n)從ct處復制n個字符到s處,返回s

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

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

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

void *memset(s,c,n)將s的前n個字符設置為c,返回s

七、功能函數(shù)()

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

函數(shù)原型意義解釋

int rand(void)生成一個0到RAND_MAX的隨機整數(shù)

void srand(unsigned seed)用seed為隨后的隨機數(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所指存儲塊調整為大小size,返回新塊的地址。如能滿足要求,新塊的內容與原塊一致;不能滿足要求時返回NULL,此時原塊不變

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

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

幾個簡單的整數(shù)函數(shù)見下表,div_t和ldiv_t是兩個預定義結構類型,用于存放整除時得到的商和余數(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ù)分別存放到結果結構的對應成員里

ldiv_t ldiv(long n, long m)同上,參數(shù)為長整數(shù)

4.數(shù)值轉換

函數(shù)原型意義解釋

double atof(const char *s)由串s構造一個雙精度值

int atoi(const char *s)由串s構造一個整數(shù)值

long atol(const char *s)由串s構造一個長整數(shù)值

5.執(zhí)行控制

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

原型是:

void abort(void);

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

原型是:

void exit(int status);

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

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

原型是:

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

可用本函數(shù)把一些函數(shù)注冊為結束動作。被注冊函數(shù)應當是無參無返回值的函數(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ù)調用,函數(shù)返回非0表示環(huán)境里有命令解釋器。如果s不是NULL,返回值由實現(xiàn)確定。

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

原型是:

char *getenv(const char *s);

從執(zhí)行環(huán)境中取回與字符串s相關聯(lián)的環(huán)境串。如果找不到就返回NULL。本函數(shù)的具體結果由實現(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的實參應是一個與字符串比較函數(shù)strcmp類似的函數(shù),確定排序的順序,當?shù)谝粋€參數(shù)keyval比第二個參數(shù)datum大、相等或小時分別返回正、零或負值。

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

qsort對于比較函數(shù)cmp的要求與bsearch一樣。設有數(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 *));

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140690
  • 函數(shù)
    +關注

    關注

    3

    文章

    4374

    瀏覽量

    64373
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28857
收藏 0人收藏
  • uuuugou1

評論

相關推薦
熱點推薦

分享一些超級炫酷的C語言小技巧

C語言常常讓人覺得它所能表達的東西非常有限。它不具有類似第級函數(shù)和模式匹配這樣的高級功能。但是C非常簡單,并且仍然有一些非常有用的語法技巧
發(fā)表于 11-07 11:25 ?811次閱讀

C語言標準的基本使用

寫出看起來專業(yè)的C代碼,除了規(guī)范的變量/函數(shù)命名,還需要熟練使用C語言標準。當為了數(shù)組拷貝自己編寫
發(fā)表于 09-14 14:04 ?936次閱讀

dsPIC語言工具

所謂就是將一些常用的函數(shù)集合在起,這樣用戶可以方便地引用和鏈接。請查閱MPLABASM30,MPLABLINK30 and Utilities User's Guide獲得有關創(chuàng)建
發(fā)表于 03-08 15:37

自用的一些,包括數(shù)據(jù),多語言,公共

本帖最后由 inaction 于 2016-5-20 09:41 編輯 自用的一些,包括數(shù)據(jù),多語言,公共等。目前在SQLSer
發(fā)表于 05-20 09:35

單片機常用C語言標準有哪些呢

單片機常用C語言標準字符串長度int strlen(char *d)返回字符串d的長度,不包括終止符NULL字符串連接函數(shù)char *st
發(fā)表于 11-25 07:19

Linux內核中GNU C擴展的一些常用C語言語法分析

13.1 總結前面12節(jié)的課程,主要針對 Linux 內核中 GNU C 擴展的一些常用 C 語言語法進行了分析。GNU
發(fā)表于 12-14 06:29

收集一些常用的可重用VC++類

收集一些常用的可重用VC++類.rar
發(fā)表于 02-08 14:17 ?12次下載

嵌入式常用c標準

C標準函數(shù)是所有符合標準的頭文件(head file)的集合,以及常用的函數(shù)實現(xiàn)程序,例如I
發(fā)表于 02-06 17:28 ?5644次閱讀
嵌入式<b class='flag-5'>常用</b>的<b class='flag-5'>c</b><b class='flag-5'>標準</b><b class='flag-5'>庫</b>

關于C語言一些特殊功能介紹

C語言之所以那么受歡迎,除了C語言歷史悠久之外,還有它具有一些編程語言沒有的功能。那么,今年我們
的頭像 發(fā)表于 08-18 15:31 ?2725次閱讀
關于<b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>一些</b>特殊功能介紹

C語言常見的一些標準

有很多工程師喜歡自己封裝一些標準已有的函數(shù),其實自己封裝的函數(shù),并不定比標準好,有時候反而
的頭像 發(fā)表于 11-18 16:22 ?3346次閱讀

總結一些常用的電平標準資料下載

電子發(fā)燒友網(wǎng)為你提供總結一些常用的電平標準資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
發(fā)表于 04-13 08:46 ?3次下載
總結<b class='flag-5'>一些</b><b class='flag-5'>常用</b>的電平<b class='flag-5'>標準</b>資料下載

C 語言使用標準開發(fā)

前面的兩種開發(fā)方式,適用于任何款芯片,但需要仔細閱讀《參考手冊》找到對應寄存器,然后用指針變量指向寄存器。ST公司為了讓用戶更快上手開發(fā),產生用戶粘性,將外設寄存器提前定義好,準備一些常用接口函數(shù)
發(fā)表于 01-13 15:08 ?1次下載
<b class='flag-5'>C</b> <b class='flag-5'>語言</b>使用<b class='flag-5'>標準</b><b class='flag-5'>庫</b>開發(fā)

C語言和STM32學習的一些學習筆記

自己總結的一些C語言和STM32F1學習的一些筆記,適合想快速了解學習C語言和STM32單片機的
發(fā)表于 03-24 14:53 ?36次下載

C語言常用標準分享

有很多工程師喜歡自己封裝一些標準已有的函數(shù),其實自己封裝的函數(shù),并不定比標準好,有時候反而
的頭像 發(fā)表于 02-20 18:08 ?1426次閱讀

列舉一些C語言中常用的宏定義

寫好C語言,使用宏定義可以防止出錯,提高可移植性、可讀性等。下文列舉一些成熟軟件中常用的宏定義。
發(fā)表于 10-07 10:54 ?961次閱讀
列舉<b class='flag-5'>一些</b><b class='flag-5'>C</b><b class='flag-5'>語言中常用</b>的宏定義
主站蜘蛛池模板: 白嫩美女直冒白浆 | 亚洲一区日韩一区欧美一区a | 四虎影5151毛片在线看 | 无遮掩H黄纯肉动漫在线观看星 | 色多多污污在线观看网站 | 寻找最美乡村教师颁奖晚会 | 男人一进一出桶女人视频 | 好男人社区 | 美艳人妻在厨房翘着屁股 | 久久黄视频 | 高h np 强j 乱l 双性 | 国精产品999一区二区三区有限 | 日本久久久久久久做爰片日本 | 两个人的视频日本在线观看完整 | 日本久久道一区二区三区 | 影音先锋男人av橹橹色 | 无码人妻丰满熟妇啪啪网不卡 | 美女岔开腿露出粉嫩花苞 | 亚洲精品天堂在线 | 中国拍三a级的明星女 | 人妻夜夜爽99麻豆AV | 歪歪漫画羞羞漫画国产 | 忘忧草秋观看未满十八 | 秋霞影音先锋一区二区 | 成人在线精品视频 | 2020亚洲国产在线播放在线 | 亚洲精品免费观看 | 琪琪see色原网站在线观看 | 九九热综合| 无码国产精品高潮久久9 | 大相蕉伊人狼人久草av | 巨胸美乳中文在线观看 | 亚洲精品国产乱码AV在线观看 | 男人到天堂a在538线 | 国产精品96久久久久久AV不卡 | 尹人久久大香找蕉综合影院 | 久久丫线这里只精品 | 超碰99热在线精品视频 | 国产成人高清在线观看播放 | 野花韩国高清完整版在线观看5 | 99久久麻豆AV色婷婷综合 |

電子發(fā)燒友

中國電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品