//功能:比較字符串的大小
//如果str1>str2返回1
//如果str1=str2返回0
//如果str1<str2返回-1
char zstrncmp(unsigned char *str1,unsigned char *str2,byte num)
{
while(num!=0)
{
if((*str1)==(*str2))
{
str1 ++;
str2 ++;
num --;
}
else if((*str1)>(*str2))
return(1);
else
return(-1);
}
return(0);
}
如果單純比較長度,直接調用類似於strlen()之類的函數就可以,加以比較即可.
如果比較字符串的大小,則比較的是字符的ASCII編碼的大小.搜索一下ASCII碼表就可以得知每一個ASCII字符的大小.
在比較時,設置一個計數器,從零開始,一直循環到最短的那個字符結束,一位一位進行比較,
1.如果 字符串1的第n位的ASCII碼值 等於 字符串2的第n位的ASCII碼值 則 繼續比較下一位
2.如果 字符串1的第n位的ASCII碼值 大於 字符串2的第n位的ASCII碼值 則 輸出結果:1,表示字符串1 > 字符串2; www.2cto.com
3.如果 字符串1的第n位的ASCII碼值 小於 字符串2的第n位的ASCII碼值 則 輸出結果:-1 表示字符串1 < 字符串2;
4.如果 每一位的ASCII碼值都相等,而且長度相同, 則 輸出結果:0 表示字符串1 == 字符串2;
5.如果 字符串1是字符串2的前m位,例如 abcd 與abcdef 比較, 則 字符串1<字符串2. 原因是,到第5位時,字符串1的ASCII值是0,而字符串2的ASCII值為'e',即十進制的101,
當然是字符串2大了.
具體到 cds和lesoqd 從第一位開始,'c'和'l'比較,當然是'c' < 'l'了,所以,"cds" < "lesoqd"
常用的幾位ascii的順序從小到大為: 0..9, A..Z, a..z.