//strcmp---比较字符串大小
//如果第一个字符串>第二个,则输出应该1。相等,输出0。第一个<第二个,输出-1
//不能直接比较如if("abc">"obc"),因为此时比较的是a o两个地址大小
//int main()
//{
// int ret1 = strcmp("abccd", "abc");
// printf("%d\n", ret1);
// //另一种描写方式:
// char* p = "abccd";
// char* q = "abc";
// int ret2 = strcmp(p, q);
// if (ret2 > 0)
// printf("第一个字符串大\n");
// else if (ret2 = 0)
// printf("两个字符串一样大\n");
// else
// printf("第二个字符串大\n");
// return 0;
//}
//用my_strcmp模拟strcmp
//思路:逐个字符比较(while和++),若(if)第一个字符串的字符>第二个字符串的字符,则return 1...
int my_strcmp(const char*s1, const char* s2)
{
assert(*s1 && s2);
while (*s1 == *s2)
{
if (*s1 == '\0' || *s2 == '\0')
{
return 0;
}
s1++;
s2++;
}
if (*s1 > *s2)
{
return 1;
}
else
{
return -1;
}
/*159-166行代码可化简为:
return *s1 - *s2;*/
}
int main()
{
char* p = "abc";
char* q = "abcd";
int ret2 = my_strcmp(p, q);
if (ret2 > 0)
printf("第一个字符串大\n");
else if (ret2 == 0)
printf("两个字符串一样大\n");
else
printf("第二个字符串大\n");
return 0;
}
03-26
885
11-11
774
12-25
1110