一:底层源码:
int __cdecl strcmp (const char * src,const char * dst)
{
int ret = 0 ;
while((ret = *(unsigned char *)src - *(unsigned char *)dst) == 0 && *dst)
{
++src, ++dst;
}
return ((-ret) < 0) - (ret < 0);
}
二:字符串
其实c++中的string可以直接用>,<,==来判断!
int yx_strcmp(string s1,string s2){
string::iterator it1 = s1.begin();
string::iterator it2 = s2.begin();
while(*it1 == *it2) it1++,it2++;
if(*it1 > *it2) return 1;
else if(*it1 == *it2) return 0;
else return -1;
}
三:字符数组
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == * str)
{
if ( *str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
return *str1 - *str2;
}