C/C++ 記憶體塊和字串操作函式
阿新 • • 發佈:2019-01-30
一、 記憶體塊操作:
1. 將dest前面count個字元置為字元c,返回dest的值
void* memset( void *dest,int c,size_t count );
2. 從src複製count位元組的字元到dest,返回dest的值。
如果src和dest出現重疊,函式會自動處理。
void* memmove(void *dest,const void *src,size_t count);
3. 從src複製count位元組的字元到dest,返回dest的值。
與memmove功能一樣,只是不能處理src和dest出現重疊
void* memcpy(void *dest,const void *src,size_t count);
當字元c被複制或者count個字元被複制時,複製停止。
如果字元c被複制,函式返回這個字元後面緊挨一個字元位置的指標,否則返回NULL。
void* memccpy(void *dest,const void *src,int c,size_t count);
6. 比較buf1和buf2前面count個位元組大小。
返回值 < 0,表示buf1小於buf2;
返回值為0,表示buf1等於buf2;
返回值 > 0,表示buf1大於buf2;
int memcmp(const void *buf1,const void *buf2,size_t count);
7. 比較buf1和buf2前面count個位元組。
與memcmp不同的是它不區分大小寫,相同的是返回值。
int memicmp(const void *buf1,const void *buf2,size_t count);
二、字串操作:
1. 獲取字串長度,字串結束符NULL不計算在內。
沒有返回值指示操作錯誤。
size_t strlen(const char *string);
2. 將字串string中的字元順序顛倒過來,NULL結束符位置不變。
返回調整後的字串的指標
char* strrev(char *string);
3. 將string中所有小寫字母替換成相應的大寫字母,其它字元保持不變。
返回調整後的字串的指標。
char* strupr(char *string);
4. 將string中所有大寫字母替換成相應的小寫字母,其它字元保持不變。
返回調整後的字串的指標。
char* strlwr(char *string);
5. 查詢字元c在字串string中首次出現的位置,NULL結束符也包含在查詢中。
返回一個指標指向字元c在字串string中首次出現的位置。沒有找到,則返回NULL。
char* strchr(const char *string,int c);
6. 查詢字元c在字串string中最後一次出現的位置,
也就是對string進行反序搜尋,包含NULL結束符。
返回一個指標,指向字元c在字串string中最後一次出現的位置,
如果沒有找到,則返回NULL。
char* strrchr(const char *string,int c);
7. 在字串string中查詢strSearch子串。
返回子串strSearch在string中首次出現位置的指標。
如果沒有找到子串strSearch,則返回NULL。
如果子串strSearch為空串,函式返回string的指標。
char* strstr(const char *string,const char *strSearch);
8. 函式執行中會自己呼叫malloc函式為複製strSource字串分配儲存空間,
然後再將strSource複製到分配到的空間中。
注意要及時釋放這個分配的空間。
返回一個指標指向為複製字串分配的空間。
如果分配空間失敗,則返回NULL值。
char* strdup(const char *strSource);
9. 將源串strSource新增到目標串strDestination後面,
並在得到的新串後面加上NULL結束符。
源串strSource的字元會覆蓋目標串strDestination後面的結束符NULL。
在字串的複製或新增過程中沒有溢位檢查,所以要保證目標串空間足夠大。
不能處理源串與目標串重疊的情況。
函式返回strDestination值。
char* strcat(char *strDestination,const char *strSource);
10. 將源串strSource開始的count個字元新增到目標串strDest後。
源串strSource的字元會覆蓋目標串strDestination後面的結束符NULL。
如果count大於源串長度,則會用源串的長度值替換count值。
得到的新串後面會自動加上NULL結束符。
與strcat函式一樣,本函式不能處理源串與目標串重疊的情況。
函式返回strDestination值。
char* strncat(char *strDestination,const char *strSource,size_t count);
11. 複製源串strSource到目標串strDestination所指定的位置,包含NULL結束符。
不能處理源串與目標串重疊的情況,函式返回strDestination值。
char* strcpy(char *strDestination,const char *strSource);
12. 將源串strSource開始的count個字元複製到目標串strDestination所指定的位置。
如果count值小於或等於strSource串的長度,不會自動新增NULL結束符到目標串中。
如果count大於strSource串的長度時,
則將strSource用NULL結束符填充補齊count個字元,複製到目標串中。
不能處理源串與目標串重疊的情況,函式返回strDestination值。
char* strncpy(char *strDestination,const char *strSource,size_t count);
13. 將string串的所有字元設定為字元c,遇到NULL結束符停止。
函式返回內容調整後的string指標。
char* strset(char *string,int c);
14. 將string串開始count個字元設定為字元c,
如果count值大於string串的長度,將用string的長度替換count值。
函式返回內容調整後的string指標。
char* strnset(char *string,int c,size_t count);
15. 查詢任何一個不包含在strCharSet串中的字元 (字串結束符NULL除外)
在string串中首次出現的位置序號。
返回一個整數值,指定在string中全部由characters中的字元組成的子串的長度。
如果string以一個不包含在strCharSet中的字元開頭,函式將返回0值。
size_t strspn(const char *string,const char *strCharSet);
16. 查詢strCharSet串中任何一個字元在string串中首次出現的位置序號,
包含字串結束符NULL。
返回一個整數值,指定在string中全部由非characters中的字元組成的子串的長度。
如果string以一個包含在strCharSet中的字元開頭,函式將返回0值。
size_t strcspn(const char *string,const char *strCharSet);
17. 查詢任何一個不包含在strCharSet串中的字元 (字串結束符NULL除外)
在string串中首次出現的位置指標。
返回一個指標,指向非strCharSet中的字元在string中首次出現的位置。
char* strspnp(const char *string,const char *strCharSet);
18. 查詢strCharSet串中任何一個字元在string串中首次出現的位置,
不包含字串結束符NULL。
返回一個指標指向strCharSet中任一字元在string中首次出現的位置。
如果兩個字串引數不含相同字元,則返回NULL值。
char* strpbrk(const char *string,const char *strCharSet);
19. 比較字串string1和string2大小。
返回值 < 0,表示string1小於string2;
返回值為0,表示string1等於string2;
返回值 > 0,表示string1大於string2;
int strcmp(const char *string1,const char *string2);
20. 比較字串string1和string2大小,和strcmp不同,比較的是它們的小寫字母版本。
返回值與strcmp相同。
int stricmp(const char *string1,const char *string2);
21. 等價於stricmp函式,只是提供一個向後相容的版本。
int strcmpi(const char *string1,const char *string2);
22. 比較字串string1和string2大小,只比較前面count個字元。
比較過程中任何一個字串的長度小於count,則count將被較短的字串的長度取代。
此時如果兩串前面的字元都相等,則較短的串要小。
返回值< 0,表示string1的子串小於string2的子串;
返回值為0,表示string1的子串等於string2的子串;
返回值> 0,表示string1的子串大於string2的子串;
int strncmp(const char *string1,const char *string2,size_t count);
23. 比較字串string1和string2大小,只比較前面count個字元。
與strncmp不同的是,比較的是它們的小寫字母版本。
返回值與strncmp相同。
int strnicmp(const char *string1,const char *string2,size_t count);
24. 在strToken 串中查詢下一個標記,
strDelimit字符集則指定了在當前查詢呼叫中可能遇到的分界符。
返回一個指標指向在strToken中找到的下一個標記。
如果找不到標記,就返回NULL值。
每次呼叫都會修改strToken內容,用NULL字元替換遇到的每個分界符。
char* strtok(char *strToken,const char *strDelimit);
char input[16] = "abc,d";
char *p = NULL;
p = strtok(input, ",");
if (p)
printf("%sn", p);
p = strtok( NULL, ",");
if (p)
printf("%sn", p);
return 0;
1. 將dest前面count個字元置為字元c,返回dest的值
void* memset( void *dest,int c,size_t count );
2. 從src複製count位元組的字元到dest,返回dest的值。
如果src和dest出現重疊,函式會自動處理。
void* memmove(void *dest,const void *src,size_t count);
3. 從src複製count位元組的字元到dest,返回dest的值。
與memmove功能一樣,只是不能處理src和dest出現重疊
void* memcpy(void *dest,const void *src,size_t count);
4. 在buf前面count位元組中查詢首次出現字元c的位置,
操作成功則返回buf中首次出現c的位置指標,否則返回NULL。
找到了字元c或者已經搜尋了count個位元組,查詢即停止。
void* memchr(const void *buf,int c,size_t count);
當字元c被複制或者count個字元被複制時,複製停止。
如果字元c被複制,函式返回這個字元後面緊挨一個字元位置的指標,否則返回NULL。
void* memccpy(void *dest,const void *src,int c,size_t count);
6. 比較buf1和buf2前面count個位元組大小。
返回值 < 0,表示buf1小於buf2;
返回值為0,表示buf1等於buf2;
返回值 > 0,表示buf1大於buf2;
int memcmp(const void *buf1,const void *buf2,size_t count);
7. 比較buf1和buf2前面count個位元組。
與memcmp不同的是它不區分大小寫,相同的是返回值。
int memicmp(const void *buf1,const void *buf2,size_t count);
二、字串操作:
1. 獲取字串長度,字串結束符NULL不計算在內。
沒有返回值指示操作錯誤。
size_t strlen(const char *string);
2. 將字串string中的字元順序顛倒過來,NULL結束符位置不變。
返回調整後的字串的指標
char* strrev(char *string);
3. 將string中所有小寫字母替換成相應的大寫字母,其它字元保持不變。
返回調整後的字串的指標。
char* strupr(char *string);
4. 將string中所有大寫字母替換成相應的小寫字母,其它字元保持不變。
返回調整後的字串的指標。
char* strlwr(char *string);
5. 查詢字元c在字串string中首次出現的位置,NULL結束符也包含在查詢中。
返回一個指標指向字元c在字串string中首次出現的位置。沒有找到,則返回NULL。
char* strchr(const char *string,int c);
6. 查詢字元c在字串string中最後一次出現的位置,
也就是對string進行反序搜尋,包含NULL結束符。
返回一個指標,指向字元c在字串string中最後一次出現的位置,
如果沒有找到,則返回NULL。
char* strrchr(const char *string,int c);
7. 在字串string中查詢strSearch子串。
返回子串strSearch在string中首次出現位置的指標。
如果沒有找到子串strSearch,則返回NULL。
如果子串strSearch為空串,函式返回string的指標。
char* strstr(const char *string,const char *strSearch);
8. 函式執行中會自己呼叫malloc函式為複製strSource字串分配儲存空間,
然後再將strSource複製到分配到的空間中。
注意要及時釋放這個分配的空間。
返回一個指標指向為複製字串分配的空間。
如果分配空間失敗,則返回NULL值。
char* strdup(const char *strSource);
9. 將源串strSource新增到目標串strDestination後面,
並在得到的新串後面加上NULL結束符。
源串strSource的字元會覆蓋目標串strDestination後面的結束符NULL。
在字串的複製或新增過程中沒有溢位檢查,所以要保證目標串空間足夠大。
不能處理源串與目標串重疊的情況。
函式返回strDestination值。
char* strcat(char *strDestination,const char *strSource);
10. 將源串strSource開始的count個字元新增到目標串strDest後。
源串strSource的字元會覆蓋目標串strDestination後面的結束符NULL。
如果count大於源串長度,則會用源串的長度值替換count值。
得到的新串後面會自動加上NULL結束符。
與strcat函式一樣,本函式不能處理源串與目標串重疊的情況。
函式返回strDestination值。
char* strncat(char *strDestination,const char *strSource,size_t count);
11. 複製源串strSource到目標串strDestination所指定的位置,包含NULL結束符。
不能處理源串與目標串重疊的情況,函式返回strDestination值。
char* strcpy(char *strDestination,const char *strSource);
12. 將源串strSource開始的count個字元複製到目標串strDestination所指定的位置。
如果count值小於或等於strSource串的長度,不會自動新增NULL結束符到目標串中。
如果count大於strSource串的長度時,
則將strSource用NULL結束符填充補齊count個字元,複製到目標串中。
不能處理源串與目標串重疊的情況,函式返回strDestination值。
char* strncpy(char *strDestination,const char *strSource,size_t count);
13. 將string串的所有字元設定為字元c,遇到NULL結束符停止。
函式返回內容調整後的string指標。
char* strset(char *string,int c);
14. 將string串開始count個字元設定為字元c,
如果count值大於string串的長度,將用string的長度替換count值。
函式返回內容調整後的string指標。
char* strnset(char *string,int c,size_t count);
15. 查詢任何一個不包含在strCharSet串中的字元 (字串結束符NULL除外)
在string串中首次出現的位置序號。
返回一個整數值,指定在string中全部由characters中的字元組成的子串的長度。
如果string以一個不包含在strCharSet中的字元開頭,函式將返回0值。
size_t strspn(const char *string,const char *strCharSet);
16. 查詢strCharSet串中任何一個字元在string串中首次出現的位置序號,
包含字串結束符NULL。
返回一個整數值,指定在string中全部由非characters中的字元組成的子串的長度。
如果string以一個包含在strCharSet中的字元開頭,函式將返回0值。
size_t strcspn(const char *string,const char *strCharSet);
17. 查詢任何一個不包含在strCharSet串中的字元 (字串結束符NULL除外)
在string串中首次出現的位置指標。
返回一個指標,指向非strCharSet中的字元在string中首次出現的位置。
char* strspnp(const char *string,const char *strCharSet);
18. 查詢strCharSet串中任何一個字元在string串中首次出現的位置,
不包含字串結束符NULL。
返回一個指標指向strCharSet中任一字元在string中首次出現的位置。
如果兩個字串引數不含相同字元,則返回NULL值。
char* strpbrk(const char *string,const char *strCharSet);
19. 比較字串string1和string2大小。
返回值 < 0,表示string1小於string2;
返回值為0,表示string1等於string2;
返回值 > 0,表示string1大於string2;
int strcmp(const char *string1,const char *string2);
20. 比較字串string1和string2大小,和strcmp不同,比較的是它們的小寫字母版本。
返回值與strcmp相同。
int stricmp(const char *string1,const char *string2);
21. 等價於stricmp函式,只是提供一個向後相容的版本。
int strcmpi(const char *string1,const char *string2);
22. 比較字串string1和string2大小,只比較前面count個字元。
比較過程中任何一個字串的長度小於count,則count將被較短的字串的長度取代。
此時如果兩串前面的字元都相等,則較短的串要小。
返回值< 0,表示string1的子串小於string2的子串;
返回值為0,表示string1的子串等於string2的子串;
返回值> 0,表示string1的子串大於string2的子串;
int strncmp(const char *string1,const char *string2,size_t count);
23. 比較字串string1和string2大小,只比較前面count個字元。
與strncmp不同的是,比較的是它們的小寫字母版本。
返回值與strncmp相同。
int strnicmp(const char *string1,const char *string2,size_t count);
24. 在strToken 串中查詢下一個標記,
strDelimit字符集則指定了在當前查詢呼叫中可能遇到的分界符。
返回一個指標指向在strToken中找到的下一個標記。
如果找不到標記,就返回NULL值。
每次呼叫都會修改strToken內容,用NULL字元替換遇到的每個分界符。
char* strtok(char *strToken,const char *strDelimit);
char input[16] = "abc,d";
char *p = NULL;
p = strtok(input, ",");
if (p)
printf("%sn", p);
p = strtok( NULL, ",");
if (p)
printf("%sn", p);
return 0;