C語言 - 第十五章 | 字串 - 比較、搜尋
比較
若要進行字串的比較,可以使用strcmp()或strncmp()。
1 | int strcmp(const char*, const char*); |
strcmp(str1, str2)會比較字串str1與str2的大小,若相同就傳回0,str1大於str2則傳回大於0的值,小於則傳回小於0的值,比較的標準是依字典順序。例如str1大於str2,表示str1在字典中的順序是在str2之後。strncmp()則是比較兩個字串中指定的字元數目是否相同。
1 |
|
註:
input大小為7,所以不管輸入多長最後都會被截取大小為7。如果輸入1234567依然會顯示密碼正確。
搜尋
strstr()
C標準函式庫也提供了搜尋字串的相關函式,先來看到strstr()函式。
1 | char* strstr(const char*, const char*); |
- 第一個參數是被搜尋字串
- 第二個參數是想要搜尋的子字串
- 如果沒找到子字串則傳回
NULL,如果搜尋到第一個符合的子字串,則傳回符合位置的指標,若想要得知子字串是在哪一個索引位置,則可以利用該指標減去字串(字元陣列)開頭的指標,得到的位移量即為符合的索引位置
1 |
|

strspn()
相對於strstr()函式找出符合的子字串,strspn()函式則用來比較兩個字串,找出兩個字串中開始不匹配的地方。
1 | size_t strspn(const char*, const char*); |
strspn()會傳回兩個字串開始不匹配的第一個字元索引位置,否則傳回0
1 |
|

strchr()、strrchr()、strcspn()、strpbrk()
strchr()函式找出字串中的指定字元第一次出現,若找到則傳回該字元的指標,否則傳回NULL,可以用找到的指標位置減去字串(字元陣列)開頭位址,如此就可以得到其於字串中的索引位置,而strrchr()則是與strchr()類似,只不過它是反向搜尋。
1 | char* strchr(const char*, int); |
strcspn()函式則是找出一個字串中與另一個字串任何字元第一次匹配的索引位置。
1 | size_t strcspn(const char*, const char*); |
1 |
|
註:
strpbrk()函式則與strcspn()類似,只不過完全不匹配的話,則傳回NULL。

註:以上參考了
hackersir gitbooks
字串比較、搜尋