C語言中“不受限制”的字符串函數(shù)總結(jié)
“不受限制的“字符串函數(shù)
按《C和指針》中所說,那些常用的字符串函數(shù)都是“不是限制的”,就是說它們只能通過尋找字符串末尾的NULL來判斷字符串的長度。
strlen
strlen函數(shù)用于求解字符串長度,其返回類型為unsigned int(即size_t)。strlen函數(shù)從起點開始,往后計數(shù),遇到‘\0'停止。
值得注意的是:strlen函數(shù)的返回類型??慈缦麓a:
#include<string.h> #include<iostream> using namespace std; int main() { if ((strlen("abc") - strlen("abcdef")) > 0) cout << "大于" << endl; else cout << "小于" << endl; return 0; }
輸出 : 大于。不必驚奇,函數(shù)的size_t(-3)是一個正數(shù)。
strcpy
strcpy函數(shù)是字符串拷貝函數(shù)
函數(shù)原型為:
需要注意:目標字符串是要可以更改的,空間要大,足夠存放拷貝的源字符串。
拷貝過程中,函數(shù)將源字符串的‘\0'一起拷貝到目標中。
#include<string> #include<iostream> using namespace std; int main() { char arr[20] = "abcdefgh******"; char* p = "hello world"; strcpy(arr, p); cout << arr << endl; return 0; }
strcmp
strcmp函數(shù)為字符串比較函數(shù)。比較的不是字符串的長度,而是對應(yīng)字符的ASCII值。
返回類型為:
#include<string> #include<iostream> using namespace std; int main() { char arr[] = "abcde"; char p[] = "abde"; cout << strcmp(arr,p) << endl; return 0; }
strcat
strcat函數(shù)為字符串追加函數(shù)。函數(shù)原型:
將源字符串追加到目標字符串上。
int main() { char arr[20] = "abcde "; char p[] = "hello"; cout << strcat(arr, p) << endl; return 0; }
strstr
strstr為字符串查找函數(shù)。函數(shù)原型為:
在目標字符串中查找子字符串,找的則返回指向子字符串的指針,否則返回空指針。
int main() { char arr[] = "hello, how are you ?"; char p[] = "are"; cout << strstr(arr, p) << endl; return 0; }
結(jié)果為:are you ?
strtok
strtok函數(shù)為字符串分隔函數(shù)。函數(shù)原型為:
strDelimit為字符串,定義了分隔字符的集合。函數(shù)執(zhí)行是遇到分割字符時,將它改為‘\0',范圍一個指向這個標記的指針。注意:strtok函數(shù)執(zhí)行時修改了字符串的內(nèi)容。
int main() { char str[] = "hello,how are you ?"; char * p; p = strtok(str, ",?"); while (p != NULL) { printf("%s\n", p); p = strtok(NULL, ",?"); } return 0; }
strerror
strerror函數(shù)的作用:返回錯誤碼對應(yīng)的信息。函數(shù)原型為
使用時要包含#include<errno.h>
小結(jié)
這些“不受限制的”的字符串函數(shù),在執(zhí)行過程中,函數(shù)本身要尋找字符串結(jié)尾的'\0'來作為結(jié)束執(zhí)行標志。如果找不到'\0',這函數(shù)執(zhí)行可能就會越界,得不到正確的結(jié)果。
到此這篇關(guān)于C語言中“不受限制”的字符串函數(shù)的文章就介紹到這了,更多相關(guān)C語言不受限制字符串函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法
本文主要介紹了C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08淺談C++中thread庫join和detach的區(qū)別
這篇文章主要為大家介紹了C++中thread庫join和detach的區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-11-11