編寫函數StrCompare(S,T)實現兩個串的比較


出處:數據結構的作業題目。

設串采用定長的順序存儲結構,編寫函數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,我一開始也這么覺得,其實人人都是這樣的啦,反正我以后不會再在這里倒下了。

學習就是一個掃雷的過程,我相信如果不去處理它我以后可能就會為這個小細節付出代價,加油吧  :)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM