今天繼續來模擬實現庫函式------strcmp()。寫my_str_cmp()函式之前,先了解一下它的定義:
strcmp
c/c++函式,比較兩個字串
設這兩個字串為str1,str2,
若str1==str2,則返回零;
若str1>str2,則返回正數;
若str1 str2 時返回乙個正數就好,具體這個數字是幾,是無所謂的;str1 < str2 時返回乙個負數就好,具體這個數字是幾,也是無所謂的。在vs的環境裡面,這個值分別是1 和 -1.
所以,像下面這樣的語句,是有問題的:
int ret = strcmp(str1, str2);
if (ret == 1)
printf("arr1 > arr2\n");
else if (ret == -1)
printf("arr1 < arr2\n");
else
printf("arr1 == arr2\n");
現在就來建立整體的框架:
#include int main()
然後開始寫my_strcmp()函式:
int my_strcmp(const char * left,const char * right) //*left和*right的值不需要修改,加上const修飾
return *left - *right; //來到這裡,當前字元必定不等,直接返回差
}
寫到這裡,my_strcmp()函式就實現完了,測試一下,發現跟預想的結果一樣。
再來與真正的庫函式比較一下:
其實只有一些小的差別了,讀者自己發現吧!int __cdecl strcmp (
const char * src,
const char * dst
)
strcmp函式實現
功能 比較字串s1和s2大小。一般形式 int strcmp 字串1,字串2 說明 當s1s2時,返回 1 即兩個字串自左向右逐個字元相比 按ascii值大小相比較 直到出現不同的字元或遇 0 為止。include using namespace std int strcmp const char ...
strcmp函式的實現
6 實現strcmp函式的功能,要求按照先比字元後比長度的方式。include int stringlength char array return arraylength int stringcmp char array1,char array2 else if array1 i if i str...
strcmp函式的實現
實現思路 從兩個字串第乙個字元開始相減,若不相等即意味著已經比出了大小,temp為0,while迴圈停止,返回temp值即可。若相等,即temp 0,那麼str1和str2都加1,繼續比較後面的字元,直到str1和str2不相等或字串遍歷結束。注 用 unsigned char str1而不是用 s...