/******************************************************************************************************* @file name: :Mystrcmp* @brief :模拟strcmp* @author :wvjnuhhail@126.com* @date :2024/06/24* @version 1.0 :V1.0* @property :暂无* @note :None* CopyRight (c) 2023-2024 wvjnuhhail@126.com All Right Reseverd******************************************************************************************************/#include <stdio.h>
#define STR_LEN 50int Strcmp(char *s1, char *s2);
int Strcmp(char *s1, char *s2) // 注意如果s1和s2不相同则返回第一个不同的字符差 s2-s1
{while (1){if (*s1 != *s2) // 只能判断相不相等{return *s2 - *s1; // 返回不同的字符差}s1++; // adfwas2++; // adfwaif (*s1 == '\0' || *s2 == '\0') // 判断是否到了字符串的末尾{break;}}return *s2 - *s1; // 这行代码是上面的循环 循环到了字符串的末尾
}int My_Strcmp_While(char *str_1, char *str_2)
{// abc// abcdwhile (*str_1 != '\0' && *str_2 != '\0'){/* if(*(str_1++) != *(str_2++)){return *(str_1-1) - *(str_2-1); //}*/int reslut = *(str_1++) - *(str_2++);if (reslut != 0){return reslut;}}// 第一次while的小括号里面判断 f 和 f// 第一次进入while循环判断的是 f 和 f// 第二次while小括号里面判断的是 s 和 g// 第二次进入while循环判断的是 s 和 greturn *str_1 - *str_2;// 0 - a
}int My_Strcmp(char *str_1, char *str_2)
{for (; *(str_1) != '\0' && *(str_2) != '\0'; str_1++, str_2++){if (*str_1 != *str_2){return *str_1 - *str_2;}}return *str_1 - *str_2;
}int main()
{// 定义两个数组,存放字符串,后面封装一个函数用来比较他们相不相同char s1[STR_LEN] = "fdajsfgjdswavfdas";char s2[STR_LEN] = "fdajsfgjdswa";int ret = Strcmp(s1, s2);if (ret == 0){printf("s1等于s2\n");}else if (ret > 0){printf("s2 > s1+++%d\n", ret);}else{printf("s2 < s1+++%d\n", ret);}return 0;
}