C語言詳解strcmp函數(shù)的分析及實現(xiàn)_第1頁
C語言詳解strcmp函數(shù)的分析及實現(xiàn)_第2頁
C語言詳解strcmp函數(shù)的分析及實現(xiàn)_第3頁
C語言詳解strcmp函數(shù)的分析及實現(xiàn)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第C語言詳解strcmp函數(shù)的分析及實現(xiàn)目錄1.函數(shù)介紹1.1.函數(shù)接口1.2.函數(shù)分析1.3.函數(shù)的簡單使用1.4.函數(shù)使用結(jié)果分析2.庫函數(shù)strcmp源代碼2.1.庫函數(shù)源代碼2.2.庫函數(shù)分析3.模擬實現(xiàn)strcmp函數(shù)3.1.模擬實現(xiàn)3.2.模擬實現(xiàn)分析

1.函數(shù)介紹

1.1.函數(shù)接口

int__cdeclstrcmp(constchar*src,constchar*dst);

這里是庫函數(shù)里面的函數(shù)定義接口。這個函數(shù)是將src和dst兩個字符串進(jìn)行比較,即為字符串比較函數(shù)。

1.2.函數(shù)分析

分析:

1、strcmp函數(shù)是比較兩個字符串中字符的順序的。實際上是拿其字符的ASCⅡ碼值來進(jìn)行比較;

2、拿第一個字符串中的第一字符值減去第二個字符串中的第一個字符,如果為0,則繼續(xù)向下比較;若不為0,則返回差值的數(shù)。

3、標(biāo)準(zhǔn)規(guī)定:

第一個字符串大于第二個字符串,則返回大于0的數(shù)字;第一個字符串等于第二個字符串,則返回0;第一個字符串小于第二個字符串,則返回小于0的數(shù)字。

1.3.函數(shù)的簡單使用

#includestdio.h

#includestring.h

intmain()

charch1[]="fbcd";

charch2[]="ab";

intret=strcmp(ch1,ch2);

printf("%d\n",ret);

return0;

}

運行結(jié)果:

為什么這里結(jié)果為1呢而不是其他大于0的數(shù)?來看看下面的分析

1.4.函數(shù)使用結(jié)果分析

分析:

先來看看倆字符串第一個字符在內(nèi)存中的ASCⅡ值:

上面函數(shù)分析里面說了兩個字符的ASCⅡ值進(jìn)行比較之后,不相等的返回大于0的數(shù);因此這里返回的是1。在vs編譯器的庫函數(shù)中對于strcmp函數(shù)來說,比較兩個字符串ASCⅡ值大于0的就都返回1;小于0的就都返回-1。,當(dāng)然這里是同意規(guī)定了一下,我們還可以不規(guī)定,直接返回他們的差值,這樣返回的差值也是大于0的數(shù)和小于0的數(shù)。

2.庫函數(shù)strcmp源代碼

2.1.庫函數(shù)源代碼

int__cdeclstrcmp(constchar*src,constchar*dst)

intret=0;

while((ret=*(unsignedchar*)src-*(unsignedchar*)dst)==0*dst)

++src,++dst;

return((-ret)0)-(ret

2.2.庫函數(shù)分析

分析:

1、這里面先用unsignedchar*將其指針轉(zhuǎn)化為無符號型,在去取里面存的值,即得到字符的ASCⅡ值;

2、return((-ret)0)-(ret這一句就是讓差值大于0的返回1;差值小于0的返回-1。

3.模擬實現(xiàn)strcmp函數(shù)

3.1.模擬實現(xiàn)

//模擬實現(xiàn)strcmp函數(shù)

intmy_strcmp(constchar*str1,constchar*str2)

assert(str1str2);

while(*str1==*str)

if(*str1=='\0')

return0;

str1++;

str2++;

return*str1-*str2;

intmain(void)

//strcmp比較的是對應(yīng)位置上的字符大小

charch1[10]={0};

charch2[10]={0};

scanf("%s",ch1);

scanf("%s",ch2);

printf("%d\n",my_strcmp(ch1,ch2));

3.2.模擬實現(xiàn)分析

分析:

1、因為這里是比較兩個字符串,所以字符串都不需要修改,因為都可以用const修飾;

2、這里模擬實現(xiàn)的時候返回值是兩個字符值的差值。

3、也可以寫為差值大于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論