當前位置:首頁 » 編程語言 » c語言strcmp源碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言strcmp源碼

發布時間: 2022-12-10 10:49:11

c語言strcmp函數是什麼樣的代碼

C語言中strcmp函數是string庫的常用函數。其原型代碼和介紹如下:

1.先說一下這個函數的實現原理,向strcmp()函數中傳入兩個字元串(記為str1,str2).傳入之後,通過把str1的各字母的ASCII碼值和str2的各字母的ASCII碼值進行比較。若str1>str2則返回正數,若str1=str2則返回0,否則,則返回負數。

2.下面實現代碼:

3.整個函數的原型中得益於「(*str1!='')&&(*str1==*str2)」這一句的代碼,因為這樣當字元指針指向空,意味著字元串已經移動到最後了,比較結束,此時可以退出循環。而如果兩個字元串不相等時,則此時函數也可以退出了。

(1)c語言strcmp源碼擴展閱讀:

這個函數要注意一下幾點:

①使用*(unsigned char*)str1而不是用*str1。這是因為傳入的參數為有符號數,有符號字元值的范圍是-128~127,無符號字元值的范圍是0~255,而字元串的ASCII沒有負值,若不轉化為無符號數這回在減法實現時出現錯誤。

②While循環中ret=*(unsigned char*)str1-*(unsigned char*)str2) && *str1,最後與上str1也可以換成str2,因為前面已經做了相減,無論哪個先為『』都會退出。因為最後與上str1是為了判斷str1是否結束,即是否為『』。

③這個函數沒有判斷參數為NULL時的情況,所以當傳入NULL時程序會崩潰。網上看別人說商業化代碼都會在調用strcmp前先判斷是否為NULL,所以可以不用判斷NULL;我在VC6上測試string.h中的strcmp(NULL,NULL),程序也會崩潰。這里可以根據實際情況來決定。

參考資料來源:網路-strcmp函數

❷ C語言strcmp函數是什麼樣的代碼

1、cmp

compare,比較的縮寫。
2、strcmp是c語言中頭文件<string.h>(字元串函數)中定義的一個用於對兩組字元串進行比較的函數,它的返回值是int類型。
假設有兩組字元串cs和ct,當cs<ct時,函數返回一個負數;當cs==ct時,函數返回0;當cs>ct時,函數返回一個正數。
即:兩個字元串自左向右逐個字元相比(按ascii值大小相比較),直到出現不同的字元或遇'\0'為止。如:"a"<"b"
,"a">"a"
,"computer">"compare"
,"comput">"comp"
strcmp函數原型為:int
strcmp(const
char
*s1,const
char
*
s2);