前幾天小編的文章【為什么你的Code,很難看?】引起了強烈的反響,后臺粉絲留言小編寫更多類似的文章。 ?
寫出讓我們看起來專業(yè)的C代碼,除了上文中要求的規(guī)范的變量/函數(shù)命名,還需要熟練使用C語言的標(biāo)準(zhǔn)庫。當(dāng)為了數(shù)組拷貝自己編寫一個for循環(huán)的時候(可以用memcpy),其他讀者看到這種代碼,肯定會感嘆程序員的C語言基礎(chǔ)不行(為了優(yōu)化空間除外)。
? 在本文中,我們將深入研究C語言標(biāo)準(zhǔn)庫的不同部分,包括
? ? ?
1、printf:將格式化的數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出。
int printf(const char *format, ...);這個函數(shù)允許您以指定的格式將數(shù)據(jù)輸出到控制臺。
printf("Hello, %s! ", "world");? 2、scanf:從標(biāo)準(zhǔn)輸入中讀取格式化的數(shù)據(jù)。
int scanf(const char *format, ...);這個函數(shù)允許您從鍵盤等輸入設(shè)備讀取數(shù)據(jù),并按照指定格式進行解析。 ?
int age; scanf("%d",?&age);
3、fprintf:將格式化的數(shù)據(jù)輸出到文件。
int fprintf(FILE *stream, const char *format, ...);這個函數(shù)與 printf 類似,但將輸出定向到文件而不是標(biāo)準(zhǔn)輸出。 ?
4、fscanf:從文件中讀取格式化的數(shù)據(jù)。
int fscanf(FILE *stream, const char *format, ...);這個函數(shù)從文件中讀取數(shù)據(jù),并按照指定格式進行解析。 ?
5、fopen:打開文件以進行讀寫操作。
FILE *fopen(const char *filename, const char *mode);? 這個函數(shù)用于打開文件,以便進行讀取或?qū)懭氩僮鳌?
FILE *file = fopen("example.txt", "r");? 6、fclose:關(guān)閉文件。
int fclose(FILE *stream);這個函數(shù)用于關(guān)閉已打開的文件。 ?
7、fgets:從文件中讀取一行數(shù)據(jù)。
char *fgets(char *s, int size, FILE *stream);這個函數(shù)從文件中讀取一行文本數(shù)據(jù)。 ?
8、fputs:將字符串寫入文件。
int fputs(const char *s, FILE *stream);這個函數(shù)將字符串寫入文件。 ?
9、fgetc:從文件中讀取一個字符。
int fgetc(FILE *stream);這個函數(shù)用于逐字符讀取文件內(nèi)容。 ?
10、fputc:將一個字符寫入文件。
int fputc(int c, FILE *stream);這個函數(shù)將一個字符寫入文件。 ?
11、rewind:將文件指針移動到文件的開頭。
void rewind(FILE *stream);? 這個函數(shù)用于將文件指針重新設(shè)置到文件的開頭。 ?
12、feof:檢查文件結(jié)束標(biāo)志。
int feof(FILE *stream);這個函數(shù)用于檢查文件是否已經(jīng)到達(dá)了文件末尾。 ? ? ?
?
? ? 1、malloc:分配動態(tài)內(nèi)存。
void *malloc(size_t size);這個函數(shù)用于在堆上分配一塊指定大小的內(nèi)存。
int *arr = (int *)malloc(5 * sizeof(int));? ? 2、calloc:分配并初始化動態(tài)內(nèi)存。
void *calloc(size_t num_elements, size_t element_size);這個函數(shù)用于分配一塊指定大小的內(nèi)存,并將所有字節(jié)初始化為零。
int *arr = (int *)calloc(5, sizeof(int));? 3、realloc:重新分配動態(tài)內(nèi)存的大小。
void *realloc(void *ptr, size_t size);這個函數(shù)用于更改已分配內(nèi)存塊的大小。
arr = (int *)realloc(arr, 10 * sizeof(int));? 4、free:釋放動態(tài)分配的內(nèi)存。
void free(void *ptr);這個函數(shù)用于釋放先前分配的內(nèi)存塊。
free(arr);? 5、rand:生成偽隨機數(shù)。
int rand(void);這個函數(shù)用于生成一個偽隨機整數(shù)。
int random_number = rand();? 6、srand:設(shè)置隨機數(shù)生成的種子。
void srand(unsigned int seed);這個函數(shù)用于設(shè)置偽隨機數(shù)生成的種子值。
srand(42);? 7、abs:計算整數(shù)的絕對值。
int abs(int n);這個函數(shù)用于計算整數(shù)的絕對值。
int absolute_value = abs(-5);? ? 8、atoi:將字符串轉(zhuǎn)換為整數(shù)。
int atoi(const char *str);這個函數(shù)用于將字符串轉(zhuǎn)換為整數(shù)。 ?
int number = atoi("42");? ? 9、atof:將字符串轉(zhuǎn)換為浮點數(shù)。 ?
double atof(const char *str);? 這個函數(shù)用于將字符串轉(zhuǎn)換為浮點數(shù)。
double pi = atof("3.14159");? 10、exit:終止程序的執(zhí)行。
void exit(int status);這個函數(shù)用于正常或異常終止程序的執(zhí)行。
exit(0); // 正常退出? 11、system:執(zhí)行系統(tǒng)命令。 ?
int system(const char *command);這個函數(shù)用于執(zhí)行操作系統(tǒng)命令。
system("ls -l");? 12、qsort:對數(shù)組進行快速排序。 ?
void qsort(void *base, size_t num_elements, size_t element_size, int (*compare_function)(const void *, const void *));? 這個函數(shù)用于對數(shù)組進行快速排序。 ?
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:將一個字符串復(fù)制到另一個字符串。
?
char *strcpy(char *dest, const char *src);這個函數(shù)用于將一個字符串復(fù)制到另一個字符串。
char destination[20]; char source[] = "Hello, world!"; strcpy(destination, source);? ? 2、strcat:將一個字符串附加到另一個字符串。
char *strcat(char *dest, const char *src);這個函數(shù)用于將一個字符串附加到另一個字符串。 ?
char str1[20] = "Hello, "; char str2[] = "world!"; strcat(str1, str2);
3、strlen:計算字符串的長度。
size_t strlen(const char *s);? 這個函數(shù)用于計算字符串的長度。
char str[] = "Hello"; size_t length = strlen(str);? ? 4、strcmp:比較兩個字符串。
int strcmp(const char *s1, const char *s2);這個函數(shù)用于比較兩個字符串。 ?
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);這個函數(shù)用于比較兩個字符串的前 n 個字符。
char str1[] = "apple"; char str2[] = "appetizer"; int result = strncmp(str1, str2, 3);? ? 6、strchr:在字符串中查找指定字符的第一次出現(xiàn)。
char *strchr(const char *s, int c);這個函數(shù)用于在字符串中查找指定字符的第一次出現(xiàn)。 ?
char str[] = "Hello, world!"; char *result = strchr(str, 'w');? ? 7、strstr:在字符串中查找指定子字符串的第一次出現(xiàn)。
? ?
char *strstr(const char *haystack, const char *needle);這個函數(shù)用于在字符串中查找指定子字符串的第一次出現(xiàn)。
? ?
char str[] = "The quick brown fox"; char *result = strstr(str, "brown");? ? 8、strtok:將字符串拆分為標(biāo)記。
?
char *strtok(char *str, const char *delimiters);? 這個函數(shù)用于將字符串拆分為標(biāo)記。
?
char?str[]?=?"apple,banana,grape"; char *token = strtok(str, ","); while (token != NULL) { printf("%s ", token); token = strtok(NULL, ","); }?
這些函數(shù)提供了對字符串、內(nèi)存塊和文件的常見操作,是C語言編程中的重要工具。通過使用這些函數(shù),您可以高效地處理輸入輸出、內(nèi)存分配和字符串操作等任務(wù),從而提高效率并簡化代碼。C語言標(biāo)準(zhǔn)庫的強大之處在于其簡潔性和靈活性,加上標(biāo)準(zhǔn)庫的支持,使其成為許多開發(fā)人員的首選編程語言之一。
希望本文能夠幫助您更好地理解和利用C語言標(biāo)準(zhǔn)庫中的函數(shù),提高您的C編程技能。 ?
?
審核編輯:湯梓紅
?
評論
查看更多