欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:C語(yǔ)言strcmp函數(shù)講解

柚子快報(bào)激活碼778899分享:C語(yǔ)言strcmp函數(shù)講解

http://yzkb.51969.com/

strcmp函數(shù)介紹

在cplusplus官網(wǎng)上是這樣介紹strcmp函數(shù)的 這里的意思是假如我們輸入兩個(gè)字符串一個(gè)是abcdef另一個(gè)也是abcdef他們兩個(gè)字符的每個(gè)元素的ascii碼值進(jìn)行比較如果兩個(gè)元素的ascii碼值都相等就移動(dòng)到下一個(gè)元素a與a進(jìn)行比較b與b進(jìn)行比較直到遇到\0為止,下面我們來(lái)看看這個(gè)圖片; 這里的意思是如果第一個(gè)字符串大于第二個(gè)字符串就返回一個(gè)大于0的數(shù)字,如果兩個(gè)字符串相等就返回0,如果第一個(gè)字符串小于第二個(gè)字符串就返回一個(gè)小于0的數(shù)字,我們來(lái)看看這段代碼

# include

# include

int main()

{

char arr1[] = {"abcde"};

char arr2[] = {"abcde"};

int ret = strcmp(arr1, arr2);

printf("%d", ret);

return 0;

}

這里我們拿arr2與arr1進(jìn)行比較,這里兩個(gè)字符串相等就返回0,再來(lái)看看不相等,當(dāng)我們把a(bǔ)rr2變成abcd時(shí),arr2就小于arr1那么就返回1,可以看看運(yùn)行結(jié)果。

# include

# include

int main()

{

char arr1[] = {"abcde"};

char arr2[] = {"abcd"};

int ret = strcmp(arr1, arr2);

printf("%d", ret);

return 0;

}

同樣我們把a(bǔ)rr1變成abcd,arr2不變時(shí)arr1就小于arr2那么就返回-1。我們可以用這個(gè)庫(kù)函數(shù)來(lái)寫一個(gè)密碼校對(duì)程序,就利用這個(gè)性質(zhì)來(lái)進(jìn)行校對(duì),如果輸入的密碼與設(shè)置的密碼相等那么就只用判斷返回值是不是為0就行了,如果不是0那么輸入的密碼錯(cuò)誤,這里就不過(guò)多描述了。 下面我們來(lái)看看strcmp函數(shù)的模擬實(shí)現(xiàn),下面是代碼。

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

# include

# include

int my_strcmp(const char* arr1,const char* arr2)

{

assert(arr1!=NULL);

assert(arr2 != NULL);

while (*arr1 == *arr2)

{

if (*arr1 == '\0')

{

return 0;

}

*arr1++;

*arr2++;

}

return *arr1 - *arr2;

}

int main()

{

char arr1[10] = { "asdfghjkl" };

char arr2[10] = { "asdfghjkl" };

int ret = my_strcmp(arr1, arr2);

printf("%d", ret);

return 0;

}

分部講解

先來(lái)看看我們的參數(shù)部分;

int my_strcmp(const char* arr1,const char* arr2)

這里我們傳了兩個(gè)char*類型的指針過(guò)來(lái)用const來(lái)修飾指針變量,為什么我們要修飾加const變量,那是因?yàn)槲覀儾幌M麄鬟^(guò)來(lái)的參數(shù)在途中被修改了,所以我們要加const來(lái)修飾限制這個(gè)指針指向的變量不能做任何改變。

assert(arr1!=NULL);

assert(arr2 != NULL);

這里我們用了assert斷言,我們要讓傳過(guò)來(lái)的字符串有意義不是一個(gè)空值,我們就需要用assert斷言一下,要讓這個(gè)字符串不等于空值。

while (*arr1 == *arr2)

{

if (*arr1 == '\0')

{

return 0;

}

*arr1++;

*arr2++;

}

return *arr1 - *arr2;

這里就是程序的關(guān)鍵部分了我們需要對(duì)兩個(gè)字符串指針的解引用 如果解引用之后兩個(gè)字符串里面被解引用的元素相等就進(jìn)入這個(gè)while循環(huán),為什么這個(gè)要用一個(gè)這個(gè)if (*arr1 == ‘\0’)這個(gè)判斷條件呢,我們這里是讓arr2與arr1進(jìn)行比較,如果arr1那個(gè)拿來(lái)比較的字符串里面的指針都指向\0了,是不是就可以證明arr2與arr1相等了。我們就直接返回0就代表兩個(gè)字符串相等,然后兩個(gè)字符串指針自增1當(dāng)走完這個(gè)while循環(huán)時(shí),就來(lái)到最后的return了,為什么要這樣寫呢,我們要直到指針減去指針得到的是他們之間差了多少個(gè)元素如果arr1大于arr2一個(gè)大指針減去一個(gè)小指針那么得到的值就是正數(shù),反過(guò)來(lái)就是一個(gè)負(fù)數(shù),這里就非常巧妙的對(duì)應(yīng)了這里的大于0和小于0的返回值的類型。 下面是運(yùn)行截圖 相等時(shí) 大于時(shí) 小于時(shí) 完。

柚子快報(bào)激活碼778899分享:C語(yǔ)言strcmp函數(shù)講解

http://yzkb.51969.com/

好文推薦

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19029060.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄