本篇文章總結一下我認為在嵌入式C語言常用的庫函數有哪些?熟悉回顧下各個函數的功能,有什么參數,分別屬于哪個頭文件等等。
C 標準庫是一組 C 內置函數、常量和頭文件,比如 <stdio.h>、<stdlib.h>、<math.h>,等等。這個標準庫可以作為 C 程序員的參考手冊。
1<assert.h>
C 標準庫的 assert.h頭文件提供了一個名為 assert 的宏,它可用于驗證程序做出的假設,并在假設為假時輸出診斷消息。2 <stdio.h>
stdio .h 頭文件定義了三個變量類型、一些宏和各種函數來執行輸入和輸出。1 |
int fclose(FILE *stream) 關閉流 stream。刷新所有的緩沖區。 |
2 |
void clearerr(FILE *stream) 清除給定流 stream 的文件結束和錯誤標識符。 |
3 |
int feof(FILE *stream) 測試給定流 stream 的文件結束標識符。 |
4 |
int ferror(FILE *stream) 測試給定流 stream 的錯誤標識符。 |
5 |
int fflush(FILE *stream) 刷新流 stream 的輸出緩沖區。 |
6 |
int fgetpos(FILE *stream, fpos_t *pos) 獲取流 stream 的當前文件位置,并把它寫入到 pos。 |
7 |
FILE *fopen(const char *filename, const char *mode) 使用給定的模式 mode 打開 filename 所指向的文件。 |
8 |
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 從給定流 stream 讀取數據到 ptr 所指向的數組中。 |
9 |
FILE *freopen(const char *filename, const char *mode, FILE *stream)把一個新的文件名 filename 與給定的打開 的流 stream 關聯,同時關閉流中的舊文件。 |
10 |
int fseek(FILE *stream, long int offset, int whence) 設置流 stream 的文件位置為給定的偏移 offset,參數 offset 意味著從給定的 whence 位置查找的字節數。 |
11 |
int fsetpos(FILE *stream, const fpos_t *pos) 設置給定流 stream 的文件位置為給定的位置。參數 pos 是由 函數 fgetpos 給定的位置。 |
12 |
long int ftell(FILE *stream) 返回給定流 stream 的當前文件位置。 |
13 |
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)把 ptr 所指向的數組中的數據寫入到給定流 stream 中。 |
14 |
int remove(const char *filename) 刪除給定的文件名 filename,以便它不再被訪問。 |
15 |
int rename(const char *old_filename, const char *new_filename) 把 old_filename 所指向的文件名改為 new_filename。 |
16 |
void rewind(FILE *stream) 設置文件位置為給定流 stream 的文件的開頭。 |
17 |
void setbuf(FILE *stream, char *buffer) 定義流 stream 應如何緩沖。 |
18 |
int setvbuf(FILE *stream, char *buffer, int mode, size_t size) 另一個定義流 stream 應如何緩沖的函數。 |
19 |
FILE *tmpfile(void) 以二進制更新模式(wb+)創建臨時文件。 |
20 |
char *tmpnam(char *str) 生成并返回一個有效的臨時文件名,該文件名之前是不存在的。 |
21 |
int fprintf(FILE *stream, const char *format, ...) 發送格式化輸出到流 stream 中。 |
22 |
int printf(const char *format, ...) 發送格式化輸出到標準輸出 stdout。 |
23 |
int sprintf(char *str, const char *format, ...) 發送格式化輸出到字符串。 |
24 |
int vfprintf(FILE *stream, const char *format, va_list arg) 使用參數列表發送格式化輸出到流 stream 中。 |
25 |
int vprintf(const char *format, va_list arg) 使用參數列表發送格式化輸出到標準輸出 stdout。 |
26 |
int vsprintf(char *str, const char *format, va_list arg) 使用參數列表發送格式化輸出到字符串。 |
27 |
int fscanf(FILE *stream, const char *format, ...) 從流 stream 讀取格式化輸入。 |
28 |
int scanf(const char *format, ...) 從標準輸入 stdin 讀取格式化輸入。 |
29 |
int sscanf(const char *str, const char *format, ...) 從字符串讀取格式化輸入。 |
30 |
int fgetc(FILE *stream) 從指定的流 stream 獲取下一個字符(一個無符號字符), 并把位置標識符往前移動。 |
31 |
char *fgets(char *str, int n, FILE *stream) 從指定的流 stream 讀取一行,并把它存儲在 str 所指向的字符串內。 當讀取 (n-1) 個字符時,或者讀取到換行符時,或者到達文件末尾時,它會停止,具體視情況而定。 |
32 |
int fputc(int char, FILE *stream) 把參數 char 指定的字符(一個無符號字符)寫入到指定的流 stream 中,并把位置標識符往前移動。 |
33 |
int fputs(const char *str, FILE *stream) 把字符串寫入到指定的流 stream 中,但不包括空字符。 |
34 |
int getc(FILE *stream) 從指定的流 stream 獲取下一個字符(一個無符號字符),并把位置 標識符往前移動。 |
35 |
int getchar(void) 從標準輸入 stdin 獲取一個字符(一個無符號字符)。 |
36 |
char *gets(char *str) 從標準輸入 stdin 讀取一行,并把它存儲在 str 所指向的字符串中。 當讀取到換行符時,或者到達文件末尾時,它會停止,具體視情況 而定。 |
37 |
int putc(int char, FILE *stream) 把參數 char 指定的字符(一個無符號字符)寫入到指定的流 stream 中,并把位置標識符往前移動。 |
38 |
int putchar(int char) 把參數 char 指定的字符(一個無符號字符)寫入到標準輸出 stdout 中。 |
39 |
int puts(const char *str) 把一個字符串寫入到標準輸出 stdout,直到空字符,但不包括空字符。換行符會被追加到輸出中。 |
40 |
int ungetc(int char, FILE *stream) 把字符 char(一個無符號字符)推入到指定的流 stream 中, 以便它是下一個被讀取到的字符。 |
41 |
void perror(const char *str) 把一個描述性錯誤消息輸出到標準錯誤 stderr。首先輸出字符串 str, 后跟一個冒號,然后是一個空格。 |
42 |
int snprintf(char *str, size_t size, const char *format, ...) 格式字符串到 str 中。 |
3<string.h>
string .h 頭文件定義了一個變量類型、一個宏和各種操作字符數組的函數。1 |
void *memchr(const void *str, int c, size_t n) 在參數 str 所指向的字符串的前 n 個字節中搜索第一次出現字符 c(一個無符號字符)的位置。 |
2 |
int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 個字節進行比較。 |
3 |
void *memcpy(void *dest, const void *src, size_t n) 從 src 復制 n 個字符到 dest。 |
4 |
void *memmove(void *dest, const void *src, size_t n) 另一個用于從 src 復制 n 個字符到 dest 的函數。 |
5 |
void *memset(void *str, int c, size_t n) 復制字符 c(一個無符號字符)到參數 str 所指向的字符串的前 n 個字符。 |
6 |
char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的結尾。 |
7 |
char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的結尾,直到n 字符長度為止。 |
8 |
char *strchr(const char *str, int c) 在參數 str 所指向的字符串中搜索第一次出現字符 c(一個無符號字符)的位置。 |
9 |
int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串進行比較。 |
10 |
int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 進行比較,最多比較前 n 個字節。 |
11 |
int strcoll(const char *str1, const char *str2) 把 str1 和 str2 進行比較,結果取決于 LC_COLLATE 的位置設置。 |
12 |
char *strcpy(char *dest, const char *src) 把 src 所指向的字符串復制到 dest。 |
13 |
char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串復制到 dest,最多復制 n 個字符。 |
14 |
size_t strcspn(const char *str1, const char *str2) 檢索字符串 str1 開頭連續有幾個字符都不含字符串 str2 中的字符。 |
15 |
char *strerror(int errnum) 從內部數組中搜索錯誤號 errnum,并返回一個指向錯誤消息字符串的指針。 |
16 |
size_t strlen(const char *str) 計算字符串 str 的長度,直到空結束字符,但不包括空結束字符。 |
17 |
char *strpbrk(const char *str1, const char *str2) 檢索字符串 str1 中第一個匹配字符串 str2 中字符的字符,不包含空結束字符。也就是說,依次檢驗字符串 str1 中的字符,當被檢驗字符在字符串 str2 中也包含時,則停止檢驗,并返回該字符位置。 |
18 |
char *strrchr(const char *str, int c) 在參數 str 所指向的字符串中搜索最后一次出現字符 c(一個無符號字符)的位置。 |
19 |
size_t strspn(const char *str1, const char *str2) 檢索字符串 str1 中第一個不在字符串 str2 中出現的字符下標。 |
20 |
char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出現字符串 needle(不包含空結束字符)的位置。 |
21 |
char *strtok(char *str, const char *delim) 分解字符串 str 為一組字符串,delim 為分隔符。 |
22 |
size_t strxfrm(char *dest, const char *src, size_t n) 根據程序當前的區域選項中的 LC_COLLATE 來轉換字符串 src 的前 n 個字符,并把它們放置在字符串 dest 中。 |
4<time.h>
1 |
char *asctime(const struct tm *timeptr) 返回一個指向字符串的指針,它代表了結構 timeptr 的日期和時間。 |
2 |
clock_t clock(void) 返回程序執行起(一般為程序的開頭),處理器時鐘所使用的時間。 |
3 |
char *ctime(const time_t *timer) 返回一個表示當地時間的字符串,當地時間是基于參數 timer。 |
4 |
double difftime(time_t time1, time_t time2) 返回 time1 和 time2 之間相差的秒數 (time1-time2)。 |
5 |
struct tm *gmtime(const time_t *timer) timer 的值被分解為 tm 結構,并用協調世界時(UTC)也被稱為格林尼治標準時間(GMT)表示。 |
6 |
struct tm *localtime(const time_t *timer) timer 的值被分解為 tm 結構,并用本地時區表示。 |
7 |
time_t mktime(struct tm *timeptr) 把 timeptr 所指向的結構轉換為一個依據本地時區的 time_t 值。 |
8 | size_t strftime(char *str, size_t maxsize,const char *format,const struct tm *timeptr)根據 format 中定義的格式化規則,格式化結構 timeptr 表示的時間,并把它存儲在 str 中。 |
9 |
time_t time(time_t *timer) 計算當前日歷時間,并把它編碼成 time_t 格式。 |
5<stdlib.h>
1 |
double atof(const char *str) 把參數 str 所指向的字符串轉換為一個浮點數(類型為 double 型)。 |
2 |
int atoi(const char *str) 把參數 str 所指向的字符串轉換為一個整數(類型為 int 型)。 |
3 |
long int atol(const char *str) 把參數 str 所指向的字符串轉換為一個長整數(類型為 long int 型)。 |
4 |
double strtod(const char *str, char **endptr) 把參數 str 所指向的字符串轉換為一個浮點數(類型為 double 型)。 |
5 |
long int strtol(const char *str, char **endptr, int base) 把參數 str 所指向的字符串轉換為一個長整數(類型為 long int 型)。 |
6 | unsigned long int strtoul(const char *str, char **endptr,int base)把參數 str 所指向的字符串轉換為一個無符號長整數(類型為 unsigned long int 型)。 |
7 |
void *calloc(size_t nitems, size_t size) 分配所需的內存空間,并返回一個指向它的指針。 |
8 |
void free(void *ptr) 釋放之前調用 calloc、malloc 或 realloc 所分配的內存空間。 |
9 |
void *malloc(size_t size) 分配所需的內存空間,并返回一個指向它的指針。 |
10 |
void *realloc(void *ptr, size_t size) 嘗試重新調整之前調用 malloc 或 calloc 所分配的 ptr 所指向的內存塊的大小。 |
11 |
void abort(void) 使一個異常程序終止。 |
12 |
int atexit(void (*func)(void)) 當程序正常終止時,調用指定的函數 func。 |
13 |
void exit(int status) 使程序正常終止。 |
14 |
char *getenv(const char *name) 搜索 name 所指向的環境字符串,并返回相關的值給字符串。 |
15 |
int system(const char *string) 由 string 指定的命令傳給要被命令處理器執行的主機環境。 |
16 | void *bsearch(const void *key, const void *base,size_t nitems,size_t size, int (*compar)(const void *,const void *))執行二分查找。 |
17 | void qsort(void *base, size_t nitems, size_t size \, int (*compar)(const void *, const void*))數組排序。 |
18 |
int abs(int x) 返回 x 的絕對值。 |
19 |
div_t div(int numer, int denom) 分子除以分母。 |
20 |
long int labs(long int x) 返回 x 的絕對值。 |
21 |
ldiv_t ldiv(long int numer, long int denom) 分子除以分母。 |
22 |
int rand(void) 返回一個范圍在 0 到 RAND_MAX 之間的偽隨機數。 |
23 |
void srand(unsigned int seed) 該函數播種由函數 rand 使用的隨機數發生器。 |
24 |
int mblen(const char *str, size_t n) 返回參數 str 所指向的多字節字符的長度。 |
25 |
size_t mbstowcs(schar_t *pwcs, const char *str, size_t n) 把參數 str 所指向的多字節字符的字符串轉換為參數 pwcs 所指向的數組。 |
26 |
int mbtowc(whcar_t *pwc, const char *str, size_t n) 檢查參數 str 所指向的多字節字符。 |
27 |
size_t wcstombs(char *str, const wchar_t *pwcs, size_t n) 把數組 pwcs 中存儲的編碼轉換為多字節字符,并把它們存儲在字符串 str 中。 |
28 |
int wctomb(char *str, wchar_t wchar) 檢查對應于參數 wchar 所給出的多字節字符的編碼。 |
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://phpxs.com/post/10076/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料