標籤:c語言 字串比較函數 指標數組 數組指標
問題描述:
寫一個函數,用於比較兩個字串的比較(string_compare).
程式分析:
(1)主要思想:傳入兩個字串後,比較這兩個字串中的每個元素,如果第一次比較就不相等,就不要讓它進入到下面的比較中。這樣一來,將它返回一個相減的值(即:兩數組中開始不相等的那兩個元素相減,返回值(int類型),是ASCII碼值相減)。進入比較的過程中時,相等就返回0;其他情況都返回那個相減的值。
(2)主要方式:定義指標數組,並對其初始化。然後照上面的思想,進行代碼的實現。
代碼如下:
/***指標數組(1)int *a[10] 是一個指標數組--->是一個數組(每個數組中的元素都是int*類型)(2)int (*a)[10] 是一個數組指標--->指向一個數組(十個int類型的數組) 注意:*,[],()的優先順序依次遞增。下面使用了指標數組的例子,至於數組指標。。**/#include<stdio.h>#include<assert.h>int string_compare(const char *str1,const char *str2){assert(str1); //ASSERT( f )assert(str2);/*在Debug模式下,每次運行到這裡後會計算括弧中的運算式,如果運算式為0,則中斷執行,彈出一個警告框,使用者可選擇“繼續”,“重試”,“忽略”在Release模式下,這句語句不會被編譯進代碼。 ASSERT一般用於程式內部確認參數的正確性,即調用內建函式的時候,要由調用者保證參數的正確,而被調用函數內部,就可以通過ASSERT來檢查參數是否滿足要求。*/while(*str1 == *str2 )//判斷兩個數組中的元素是否相等{str1++; //使兩個指標指向下一位;繼續比較str2++;if(*str1 == '\0') //雙方比較到'\0'處,都相等{return 0; //返回0,表示二字串相等}}return *str1-*str2; //若不相等,返回一個正值或負值}int main(){char *ch[2];ch[0] = "ab";//對這個指標數組的元素初始化,使其指向這個字串首元素的首地址ch[1] = "a";//同上printf("%d\n",string_compare(ch[0],ch[1]));//調用這個函數return 0;}
(C語言)字串比較函數,指標數組與數組指標