Ghua975 2022-12-28 17:28 采纳率: 83.3%
浏览 32
已结题

c语言中模拟实现strcmp

这个代码哪里有问题啊为什么不能正常输出return呢


#include <stdio.h>
int my_strcmp(const char* str1,const char* str2)
{
    // if the characters currently being compared are equal
    int ret;
    while (*str1 == *str2)
    {

        if (*str1 == '\0'&&*str2 == '\0')
        {
            return 0;
        }
        str1++;
        str2++;
    }
    if (*str1 > *str2)
    {
        ret=1;
    }
    else
    {
        ret=-1;
    }
int main()
{
    const char *str1="abcd";
    const char *str2="dcba";
    const char *str3="abc";
    int ret = my_strcmp(str1,str1);
    printf("%d\n",ret);
    ret = my_strcmp(str1,str2);
    printf("%d\n",ret);
    ret = my_strcmp(str1,str3);
    printf("%d\n",ret);

}
}
  • 写回答

3条回答 默认 最新

  • 小6的跟班 2022-12-28 17:38
    关注

    大括号的位置错了

    #include <stdio.h>
    #include <stdlib.h>
    int my_strcmp(const char* str1,const char* str2)
    {
        // if the characters currently being compared are equal
        while (*str1 == *str2)
        {
     
            if (*str1 == '\0')//*str1和*str2都为'\0'时
            {
                return 0;
            }
            str1++;
            str2++;
        }
        if (*str1 > *str2)
        {
            return 1;
        }
        else
        {
            return -1;
        }
    }
    int main()
    {
        const char *str1="abcd";
        const char *str2="dcba";
        const char *str3="abc";
        int ret = my_strcmp(str1,str1);
        printf("%d\n",ret);
        ret = my_strcmp(str1,str2);
        printf("%d\n",ret);
        ret = my_strcmp(str1,str3);
        printf("%d\n",ret);
     
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 修改了问题 12月28日
  • 创建了问题 12月28日