程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言入門知識 >> (C語言)字符串比較函數,指針數組與數組指針

(C語言)字符串比較函數,指針數組與數組指針

編輯:C語言入門知識

問題描述:

寫一個函數,用於比較兩個字符串的比較(string_compare).

程序分析:

(1)主要思想:傳入兩個字符串後,比較這兩個字符串中的每個元素,如果第一次比較就不相等,就不要讓它進入到下面的比較中。這樣一來,將它返回一個相減的值(即:兩數組中開始不相等的那兩個元素相減,返回值(int類型),是ASCII碼值相減)。進入比較的過程中時,相等就返回0;其他情況都返回那個相減的值。

(2)主要方式:定義指針數組,並對其初始化。然後照上面的思想,進行代碼的實現。

代碼如下:

 

/***指針數組
(1)int *a[10] 是一個指針數組--->是一個數組(每個數組中的元素都是int*類型)
(2)int (*a)[10] 是一個數組指針--->指向一個數組(十個int類型的數組)
 注意:*,[],()的優先級依次遞增。
下面使用了指針數組的例子,至於數組指針。。**/

#include
#include

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;
}


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved