strcasecmp
是一個 C 語言庫函數,用于比較兩個字符串,忽略大小寫差異
#include <ctype.h>
int strcasecmp(const char *s1, const char *s2) {
const unsigned char *p1 = (const unsigned char *)s1;
const unsigned char *p2 = (const unsigned char *)s2;
int result;
if (p1 == p2)
return 0;
while ((result = tolower(*p1) - tolower(*p2)) == 0 && *p1) {
++p1;
++p2;
}
return result;
}
這個實現首先將輸入的字符串指針轉換為 unsigned char
類型的指針,以便在比較時處理負值。然后,通過一個循環來逐個比較兩個字符串中的字符。在循環中,我們使用 tolower
函數將每個字符轉換為小寫形式,然后計算它們之間的差值。如果兩個字符相等(即差值為0),則繼續比較下一對字符。當遇到不相等的字符或到達字符串末尾時,循環結束。
最后,返回循環結束時計算出的差值。如果差值為0,表示兩個字符串相等;如果差值不為0,表示兩個字符串不相等,并根據差值的正負來確定它們的順序。
需要注意的是,這個實現可能會因編譯器和平臺的不同而有所差異。在實際應用中,建議使用標準庫提供的 strcasecmp
函數,而不是自己實現。