出處:數據結構的作業題目。
設串采用定長的順序存儲結構,編寫函數StrCompare(S,T)實現兩個串的比較。要求比較結果有大於、等於和小於三種情況。
以自定義函數形式寫出,直接上代碼吧
int StrCompare(String *S, String *T) { int i=1; if(S->ch[0]==T->ch[0]) { while(i<=S->len) { if(S->ch[i]!=T->ch[i]) return S->ch[i]-T->ch[i]; i++; } if(i>S->len) return 0; } return S->ch[0]-T->ch[0]; }
既然能po在學習日記上肯定是有意義的。因為此前我雖然用過這個函數(只有在考試或者寫作業的時候),但是總是沒搞清楚compare的意思。
我以為是整個串的ASCii碼數值加起來去compare大小,我錯了。
字符串比較的規則是:從兩個字符串的首字符開始,一次比較相對應的字符(比較字符的ASCII碼),知道出現不同的字符或遇‘\0’為止。如果所有的字符都相同,返回0;否則,以第一個不相同字符的比較結果為准,返回這兩個字符的差,即第一個字符串中的字符減去第二個字符串中的字符得到的差。
可能這是很多人不以為意的一個point,我一開始也這么覺得,其實人人都是這樣的啦,反正我以后不會再在這里倒下了。
學習就是一個掃雷的過程,我相信如果不去處理它我以后可能就會為這個小細節付出代價,加油吧 :)