C/C++編程筆記:C語言字符串比較函數(shù),超詳細(xì),值得收藏!

void *memset(void *dest, int c, size_t count);
將dest前面count個(gè)字符置為字符c.
返回dest的值.
void *memmove(void *dest, const void *src, size_t count);
從src復(fù)制count字節(jié)的字符到dest. 如果src和dest出現(xiàn)重疊, 函數(shù)會自動(dòng)處理.
返回dest的值.
void *memcpy(void *dest, const void *src, size_t count);
從src復(fù)制count字節(jié)的字符到dest. 與memmove功能一樣, 只是不能處理src和dest出現(xiàn)重疊.
返回dest的值.
void *memchr(const void *buf, int c, size_t count);
在buf前面count字節(jié)中查找首次出現(xiàn)字符c的位置. 找到了字符c或者已經(jīng)搜尋了count個(gè)字節(jié), 查找即停止.
操作成功則返回buf中首次出現(xiàn)c的位置指針, 否則返回NULL.
void *_memccpy(void *dest, const void *src, int c, size_t count);
從src復(fù)制0個(gè)或多個(gè)字節(jié)的字符到dest. 當(dāng)字符c被復(fù)制或者count個(gè)字符被復(fù)制時(shí), 復(fù)制停止.
如果字符c被復(fù)制, 函數(shù)返回這個(gè)字符后面緊挨一個(gè)字符位置的指針. 否則返回NULL.
int memcmp(const void *buf1, const void *buf2, size_t count);
比較buf1和buf2前面count個(gè)字節(jié)大小.
返回值< 0, 表示buf1小于buf2;
返回值為0, 表示buf1等于buf2;
返回值> 0, 表示buf1大于buf2.
int memicmp(const void *buf1, const void *buf2, size_t count);
比較buf1和buf2前面count個(gè)字節(jié). 與memcmp不同的是, 它不區(qū)分大小寫.
返回值同上.
size_t strlen(const char *string);
獲取字符串長度, 字符串結(jié)束符NULL不計(jì)算在內(nèi).
沒有返回值指示操作錯(cuò)誤.
char *strrev(char *string);
將字符串string中的字符順序顛倒過來. NULL結(jié)束符位置不變.
返回調(diào)整后的字符串的指針.
char *_strupr(char *string);
將string中所有小寫字母替換成相應(yīng)的大寫字母, 其它字符保持不變.
返回調(diào)整后的字符串的指針.
char *_strlwr(char *string);
將string中所有大寫字母替換成相應(yīng)的小寫字母, 其它字符保持不變.
返回調(diào)整后的字符串的指針.
char *strchr(const char *string, int c);
查找字符c在字符串string中首次出現(xiàn)的位置, NULL結(jié)束符也包含在查找中.
返回一個(gè)指針, 指向字符c在字符串string中首次出現(xiàn)的位置, 如果沒有找到, 則返回NULL.

char *strrchr(const char *string, int c);
查找字符c在字符串string中最后一次出現(xiàn)的位置, 也就是對string進(jìn)行反序搜索, 包含NULL結(jié)束符.
返回一個(gè)指針, 指向字符c在字符串string中最后一次出現(xiàn)的位置, 如果沒有找到, 則返回NULL.
char *strstr(const char *string, const char *strSearch);
在字符串string中查找strSearch子串.
返回子串strSearch在string中首次出現(xiàn)位置的指針. 如果沒有找到子串strSearch, 則返回NULL. 如果子串strSearch為空串, 函數(shù)返回string值.
char *strdup(const char *strSource);
函數(shù)運(yùn)行中會自己調(diào)用malloc函數(shù)為復(fù)制strSource字符串分配存儲空間, 然后再將strSource復(fù)制到分配到的空間中. 注意要及時(shí)釋放這個(gè)分配的空間.
返回一個(gè)指針, 指向?yàn)閺?fù)制字符串分配的空間; 如果分配空間失敗, 則返回NULL值.
char *strcat(char *strDestination, const char *strSource);
將源串strSource添加到目標(biāo)串strDestination后面, 并在得到的新串后面加上NULL結(jié)束符.
源串strSource的字符會覆蓋目標(biāo)串strDestination后面的結(jié)束符NULL. 在字符串的復(fù)制或添加過程中沒有溢出檢查,
所以要保證目標(biāo)串空間足夠大. 不能處理源串與目標(biāo)串重疊的情況.
函數(shù)返回strDestination值.
char *strncat(char *strDestination, const char *strSource, size_t count);
將源串strSource開始的count個(gè)字符添加到目標(biāo)串strDest后.
源串strSource的字符會覆蓋目標(biāo)串strDestination后面的結(jié)束符NULL. 如果count大于源串長度,
則會用源串的長度值替換count值. 得到的新串后面會自動(dòng)加上NULL結(jié)束符. 與strcat函數(shù)一樣, 本函數(shù)不能處理源串與目標(biāo)串重疊的情況.
函數(shù)返回strDestination值.
char *strcpy(char *strDestination, const char *strSource);
復(fù)制源串strSource到目標(biāo)串strDestination所指定的位置, 包含NULL結(jié)束符. 不能處理源串與目標(biāo)串重疊的情況.
函數(shù)返回strDestination值.
char *strncpy(char *strDestination, const char *strSource, size_t count);
將源串strSource開始的count個(gè)字符復(fù)制到目標(biāo)串strDestination所指定的位置.
如果count值小于或等于strSource串的長度, 不會自動(dòng)添加NULL結(jié)束符目標(biāo)串中, 而count大于strSource串的長度時(shí),
則將strSource用NULL結(jié)束符填充補(bǔ)齊count個(gè)字符, 復(fù)制到目標(biāo)串中. 不能處理源串與目標(biāo)串重疊的情況.
函數(shù)返回strDestination值.
char *strset(char *string, int c);
將string串的所有字符設(shè)置為字符c, 遇到NULL結(jié)束符停止.
函數(shù)返回內(nèi)容調(diào)整后的string指針.
char *strnset(char *string, int c, size_t count);
將string串開始count個(gè)字符設(shè)置為字符c, 如果count值大于string串的長度, 將用string的長度替換count值.
函數(shù)返回內(nèi)容調(diào)整后的string指針.
size_t strspn(const char *string, const char *strCharSet);
查找任何一個(gè)不包含在strCharSet串中的字符 (字符串結(jié)束符NULL除外) 在string串中首次出現(xiàn)的位置序號.
返回一個(gè)整數(shù)值, 指定在string中全部由characters中的字符組成的子串的長度. 如果string以一個(gè)不包含在strCharSet中的字符開頭, 函數(shù)將返回0值.
size_t strcspn(const char *string, const char *strCharSet);
查找strCharSet串中任何一個(gè)字符在string串中首次出現(xiàn)的位置序號, 包含字符串結(jié)束符NULL.
返回一個(gè)整數(shù)值, 指定在string中全部由非characters中的字符組成的子串的長度. 如果string以一個(gè)包含在strCharSet中的字符開頭, 函數(shù)將返回0值.

char *strspnp(const char *string, const char *strCharSet);
查找任何一個(gè)不包含在strCharSet串中的字符 (字符串結(jié)束符NULL除外) 在string串中首次出現(xiàn)的位置指針.
返回一個(gè)指針, 指向非strCharSet中的字符在string中首次出現(xiàn)的位置.
char *strpbrk(const char *string, const char *strCharSet);
查找strCharSet串中任何一個(gè)字符在string串中首次出現(xiàn)的位置, 不包含字符串結(jié)束符NULL.
返回一個(gè)指針, 指向strCharSet中任一字符在string中首次出現(xiàn)的位置. 如果兩個(gè)字符串參數(shù)不含相同字符, 則返回NULL值.
int strcmp(const char *string1, const char *string2);
比較字符串string1和string2大小.
返回值< 0, 表示string1小于string2;
返回值為0, 表示string1等于string2;
返回值> 0, 表示string1大于string2.
int stricmp(const char *string1, const char *string2);
比較字符串string1和string2大小,和strcmp不同, 比較的是它們的小寫字母版本.
返回值與strcmp相同.
int strcmpi(const char *string1, const char *string2);
等價(jià)于stricmp函數(shù), 只是提供一個(gè)向后兼容的版本.
int strncmp(const char *string1, const char *string2, size_t count);
比較字符串string1和string2大小,只比較前面count個(gè)字符. 比較過程中, 任何一個(gè)字符串的長度小于count, 則count將被較短的字符串的長度取代. 此時(shí)如果兩串前面的字符都相等, 則較短的串要小.
返回值< 0, 表示string1的子串小于string2的子串;
返回值為0, 表示string1的子串等于string2的子串;
返回值> 0, 表示string1的子串大于string2的子串.
int strnicmp(const char *string1, const char *string2, size_t count);
比較字符串string1和string2大小,只比較前面count個(gè)字符. 與strncmp不同的是, 比較的是它們的小寫字母版本.
返回值與strncmp相同.
char *strtok(char *strToken, const char *strDelimit);
在strToken 串中查找下一個(gè)標(biāo)記, strDelimit字符集則指定了在當(dāng)前查找調(diào)用中可能遇到的分界符.
返回一個(gè)指針, 指向在strToken中找到的下一個(gè)標(biāo)記. 如果找不到標(biāo)記, 就返回NULL值. 每次調(diào)用都會修改strToken內(nèi)容, 用NULL字符替換遇到的每個(gè)分界符.
希望對你有幫助!
微信公眾號:C語言編程學(xué)習(xí)基地

學(xué)習(xí)C/C++編程知識,提升C/C++編程能力,歡迎關(guān)注UP一起來成長!
另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~