int strcmp(const char *str1, const char *str2)
- 参数带const
- 返回值的问题,str1>str2,返回正数,不是1;同理返回0,返回负数
- 检查指针的有效性
- 如何使代码最简洁正确
- 返回值的简洁写法!!!
- 检查str1与str2是否相等。。。
代码:
#include <iostream>
#include <cassert>
using namespace std;
int mystrcmp(const char *str1, const char *str2){
assert(str1 != NULL && str2 != NULL);
if(str1 == str2){
return 0;
}
// 这里的*str1和*str2都必须有,网上有的只检查str1,是错误的!!!
// while(*str1 && *str1++ == *str2++); //error
while(*str1 && *str2 && (*str1++ == *str2++))
;
return *str1 - *str2;
}
int main(){
char str1[20] = "abc";
char str2[20] = "abcde";
char str3[20] = "abcd";
char str4[20] = "abcd";
cout << mystrcmp(str1, str2) << endl;
cout << mystrcmp(str2, str3) << endl;
cout << mystrcmp(str3, str4) << endl;
return 0;
}
输出:
-100
101
0