//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; }