嵌入式C語言標準庫大全

2023-08-24 11:23:37 來源:玩轉單片機與嵌入式


【資料圖】

前幾天小編的文章【為什么你的Code,很難看?】引起了強烈的反響,后臺粉絲留言小編寫更多類似的文章。 寫出讓我們看起來專業的C代碼,除了上文中要求的規范的變量/函數命名,還需要熟練使用C語言的標準庫。當為了數組拷貝自己編寫一個for循環的時候(可以用memcpy),其他讀者看到這種代碼,肯定會感嘆程序員的C語言基礎不行(為了優化空間除外)。 在本文中,我們將深入研究C語言標準庫的不同部分,包括 、以及 頭文件中包含的函數。我們將介紹這些函數的功能、用途以及提供的C代碼示例,以便更好地理解和利用這些功能。 頭文件

是C語言標準庫中最重要的頭文件之一,提供了輸入和輸出功能。以下是 中常見的一些函數: 1、printf:將格式化的數據輸出到標準輸出。

int printf(const char *format, ...);
這個函數允許您以指定的格式將數據輸出到控制臺。
printf("Hello, %s!", "world");
2、scanf:從標準輸入中讀取格式化的數據。
int scanf(const char *format, ...);
這個函數允許您從鍵盤等輸入設備讀取數據,并按照指定格式進行解析。
int age;scanf("%d",&age);

3、fprintf:將格式化的數據輸出到文件。

int fprintf(FILE *stream, const char *format, ...);
這個函數與 printf 類似,但將輸出定向到文件而不是標準輸出。 4、fscanf:從文件中讀取格式化的數據。
int fscanf(FILE *stream, const char *format, ...);
這個函數從文件中讀取數據,并按照指定格式進行解析。 5、fopen:打開文件以進行讀寫操作。
FILE *fopen(const char *filename, const char *mode);
這個函數用于打開文件,以便進行讀取或寫入操作。
FILE *file = fopen("example.txt", "r");
6、fclose:關閉文件。
int fclose(FILE *stream);
這個函數用于關閉已打開的文件。 7、fgets:從文件中讀取一行數據。
char *fgets(char *s, int size, FILE *stream);
這個函數從文件中讀取一行文本數據。 8、fputs:將字符串寫入文件。
int fputs(const char *s, FILE *stream);
這個函數將字符串寫入文件。 9、fgetc:從文件中讀取一個字符。
int fgetc(FILE *stream);
這個函數用于逐字符讀取文件內容。 10、fputc:將一個字符寫入文件。
int fputc(int c, FILE *stream);
這個函數將一個字符寫入文件。 11、rewind:將文件指針移動到文件的開頭。
void rewind(FILE *stream);
這個函數用于將文件指針重新設置到文件的開頭。 12、feof:檢查文件結束標志。
int feof(FILE *stream);
這個函數用于檢查文件是否已經到達了文件末尾。

頭文件

是另一個重要的C語言標準庫頭文件,它包含了一組通用的實用函數,用于內存分配、隨機數生成、排序等任務。以下是 中常見的一些函數:

1、malloc:分配動態內存。

void *malloc(size_t size);
這個函數用于在堆上分配一塊指定大小的內存。
int *arr = (int *)malloc(5 * sizeof(int));
2、calloc:分配并初始化動態內存。
void *calloc(size_t num_elements, size_t element_size);
這個函數用于分配一塊指定大小的內存,并將所有字節初始化為零。
int *arr = (int *)calloc(5, sizeof(int));
3、realloc:重新分配動態內存的大小。
void *realloc(void *ptr, size_t size);
這個函數用于更改已分配內存塊的大小。
arr = (int *)realloc(arr, 10 * sizeof(int));
4、free:釋放動態分配的內存。
void free(void *ptr);
這個函數用于釋放先前分配的內存塊。
free(arr);
5、rand:生成偽隨機數。
int rand(void);
這個函數用于生成一個偽隨機整數。
int random_number = rand();
6、srand:設置隨機數生成的種子。
void srand(unsigned int seed);
這個函數用于設置偽隨機數生成的種子值。
srand(42);
7、abs:計算整數的絕對值。
int abs(int n);
這個函數用于計算整數的絕對值。
int absolute_value = abs(-5);
8、atoi:將字符串轉換為整數。
int atoi(const char *str);
這個函數用于將字符串轉換為整數。
int number = atoi("42");
9、atof:將字符串轉換為浮點數。
double atof(const char *str);
這個函數用于將字符串轉換為浮點數。
double pi= atof("3.14159");
10、exit:終止程序的執行。
void exit(int status);
這個函數用于正?;虍惓=K止程序的執行。
exit(0); // 正常退出
11、system:執行系統命令。
int system(const char *command);
這個函數用于執行操作系統命令。
system("ls -l");
12、qsort:對數組進行快速排序。
void qsort(void *base, size_t num_elements, size_t element_size, int (*compare_function)(const void *, const void *));
這個函數用于對數組進行快速排序。
int compare(const void *a, const void *b) {return (*(int *)a - *(int *)b);}int arr[] = {5, 2, 9, 1, 5};qsort(arr, 5, sizeof(int), compare);
頭文件中的函數

頭文件提供了處理字符串的函數,包括字符串復制、連接、比較等操作。以下是 中常見的一些函數:

1、strcpy:將一個字符串復制到另一個字符串。

char *strcpy(char *dest, const char *src);
這個函數用于將一個字符串復制到另一個字符串。
char destination[20];char source[] = "Hello, world!";strcpy(destination, source);
2、strcat:將一個字符串附加到另一個字符串。
char *strcat(char *dest, const char *src);
這個函數用于將一個字符串附加到另一個字符串。
char str1[20] = "Hello, ";char str2[] = "world!";strcat(str1, str2);

3、strlen:計算字符串的長度。

size_t strlen(const char *s);
這個函數用于計算字符串的長度。
char str[] = "Hello";size_t length = strlen(str);
4、strcmp:比較兩個字符串。
int strcmp(const char *s1, const char *s2);
這個函數用于比較兩個字符串。
char str1[] = "apple";char str2[] = "banana";int result = strcmp(str1, str2);
5、strncmp:比較兩個字符串的前 n 個字符。
int strncmp(const char *s1, const char *s2, size_t n);
這個函數用于比較兩個字符串的前 n 個字符。
char str1[] = "apple";char str2[] = "appetizer";int result = strncmp(str1, str2, 3);
6、strchr:在字符串中查找指定字符的第一次出現。
char *strchr(const char *s, int c);
這個函數用于在字符串中查找指定字符的第一次出現。
char str[] = "Hello, world!";char *result = strchr(str, "w");
7、strstr:在字符串中查找指定子字符串的第一次出現。
char *strstr(const char *haystack, const char *needle);
這個函數用于在字符串中查找指定子字符串的第一次出現。
char str[] = "The quick brown fox";char *result = strstr(str, "brown");
8、strtok:將字符串拆分為標記。
char *strtok(char *str, const char *delimiters);
這個函數用于將字符串拆分為標記。
charstr[]="apple,banana,grape";char *token = strtok(str, ",");while (token != NULL) {printf("%s", token);token = strtok(NULL, ",");}
這些函數提供了對字符串、內存塊和文件的常見操作,是C語言編程中的重要工具。通過使用這些函數,您可以高效地處理輸入輸出、內存分配和字符串操作等任務,從而提高效率并簡化代碼。C語言標準庫的強大之處在于其簡潔性和靈活性,加上標準庫的支持,使其成為許多開發人員的首選編程語言之一。希望本文能夠幫助您更好地理解和利用C語言標準庫中的函數,提高您的C編程技能。

審核編輯:湯梓紅

標簽:

上一篇:IGBT的特點、工作原理及安全工作區
下一篇:最后一頁