您好,登錄后才能下訂單哦!
這篇文章主要介紹“C語言常用的庫函數怎么使用”,在日常操作中,相信很多人在C語言常用的庫函數怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言常用的庫函數怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
字符串已經 '\0' 作為結束標志,strlen函數返回的是在字符串中 '\0' 前面出現的字符個數(不包 含 '\0' )。
函數的模擬實現
int my_strlen(dest) { int count=0; while(dest)//當dest等于'\0'時停止循環 { count++; dest++; } return count; }
int my_strlen(char* dest) { int count=0; if(*dest!='0') { dest++; count++; return my_strlen(dest,count) } else return count; }
int my_strlen(char* dest) { char* arr=dest;//定義一個新指針指向dest while(*arr)//直到arr指向'\0' { arr++; } return (arr)-(dest);//指針相減代表兩個指針之間的元素個數 }
char* strcpy ( char * destination , const char * source )
會將源字符串中的 '\0' 拷貝到目標空間。
目標空間必須足夠大,并且可變以確保能存放源字符串。
函數的模擬實現
char* my_strcpy(char* dest, const char* str) { char* arr1 = dest; while ((*dest++ = *str++)!='\0') { ; } return arr1; } int main() { char arr1[] = "***************"; char arr2[] = "hello word"; my_strcpy(arr1, arr2); printf("%s", arr1); return 0; }
int strcmp ( const char * str1, const char * str2 );
第一個字符串大于第二個字符串,則返回大于0的數字
第一個字符串等于第二個字符串,則返回0
第一個字符串小于第二個字符串,則返回小于0的數字
函數的模擬實現
int my_strcmp(char* arr1,char* arr2) { while(*arr1 == *arr2) { if (*arr1 == '\0' && *arr2 == '\0') { return 0; } else { arr1++; arr2++; } }if (*arr1 > *arr2) { return 1; } else if (*arr1 < *arr2) { return -1; } }
char * strcat ( char * destination, const char * source );
函數的模擬實現
char* my_strcat(char* dest, char* str) { char* ret = dest; while (*dest) { dest++; } while (*dest++=*str++) { ; } return ret; } int main() { char arr1[50] = "hello"; char arr2[] = "word"; char* count=my_strcat(arr1, arr2); printf("%s", count); return 0; }
char * strstr ( const char *str1, const char * str2);
函數的模擬實現
char* my_strstr(char* dest, char* str) { char* arr1 = str; char* cur = dest; while (*cur) { str = arr1; dest = cur; if (*dest != *str) { dest++; str++; } else if (*dest == *str) { while (*dest == *str) { dest++; str++; }if (*str == '\0') { return cur; } } cur++; }return NULL; } int main() { char arr1[] = "abbbcdef"; char arr2[] = "bbc"; char* ret=my_strstr(arr1, arr2); if (NULL == ret) { printf("找不到子串\n"); } else { printf("%s\n", ret); } return 0; }
char * strtok ( char * str, const char * sep );
strtok函數的第一個參數不為 NULL ,函數將找到str中第一個標記,strtok函數將保存它在字符串中的位置。
strtok函數的第一個參數為 NULL ,函數將在同一個字符串中被保存的位置開始,查找下一個標記
int main() { char buff[] = "www.aaabbbccc@qq.com"; char buf[20] = { 0 }; strcpy(buf, buff); char* sep=".@"; char* str = NULL; for (str = strtok(buf, sep); str != NULL; str = strtok(NULL, sep)) {//NULL是從保存好的位置開始往后找 printf("%s\n", str); } return 0; }
iscntrl | 任何控制字符 |
isspace | 空白字符:空格‘ ’,換頁‘\f’,換行'\n',回車‘\r’,制表符'\t'或者垂直制表符'\v' |
isdigit | 十進制數字 0~9 |
isxdigit | 十六進制數字,包括所有十進制數字,小寫字母a~f,大寫字母A~F |
islower | 小寫字母a~z |
isupper | 大寫字母A~Z |
isalpha | 字母a~z或A~Z |
isalnum | 字母或者數字,a~z,A~Z,0~9 |
ispunct | 標點符號,任何不屬于數字或者字母的圖形字符(可打印) |
isgraph | 任何圖形字符 |
isprint | 任何可打印字符,包括圖形字符和空白字符 |
void * memcpy ( void * destination , const void * source , size_t num )
函數模擬實現
void* my_memmove(void* dest,void* str , size_t count) { void* ch = dest; if (dest > str) { while (count--) { *((char*)dest + count) = *((char*)str + count); } } else { while (count--) { *(char*)dest = *(char*)str; dest=(char*)dest+1; str=(char*)str+1; } } } int main() { int arr1[10] = {1,2,3,4,5,6,7,8,9,10}; my_memmove(arr1+2, arr1 , 20); int sz = sizeof(arr1) / sizeof(arr1[0]); for (int i = 0; i < sz; i++) { printf("%d", arr1[i]); } return 0; }
int memcmp ( const void * ptr1 , const void * ptr2 , size_t num );
函數模擬實現
void* my_memcmp(char* arr, char* arr1, int count) { while (count--) { if (*(char*)arr > *(char*)arr1) { return 1; } else if ((*(char*)arr < *(char*)arr1)) { return -1; } arr++; arr1++; } return 0; } int main() { int arr[] = { 1,2,3,4,5 }; int arr1[] = { 1,2,3,4,4 }; int ret=my_memcmp(arr, arr1, 20); printf("%d", ret); return 0; }
到此,關于“C語言常用的庫函數怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。