不用strcmp比较两个字符串大小,大家可以帮我看看我哪里错了吗

#include<stdio.h>
#include<string.h>
int main()
{
char str1[100]="",str2[100]="";
int len1,len2,i;
int flag=0;

printf("请输入字符串str1: ");
gets(str1);
printf("请输入字符串str2: ");
gets(str2);

len1=strlen(str1);
len2=strlen(str2);

for(i=0;flag==0;i++)
{
    if(str1[i]!='\0'&&str2[i]!='\0')
    {
        if(str1[i]>str2[i])
        flag=1;
        if(str1[i]<str2[i])
        flag=-1;
        else
        flag=0;
    }
}

if(flag==1)
printf("%s>%s",str1,str2);
if(flag==-1)
printf("%s<%s",str1,str2);
if(flag==0)
{
    if(len1>len2)
    printf("%s>%s",str1,str2);
    if(len1<len2)
    printf("%s<%s",str1,str2);
    else
    printf("%s=%s",str1,str2);
}

return 0;

}

如果两个字符串相等,比较到'\0'的时候就break掉循环了

    if(str1[i]!='\0'&&str2[i]!='\0') {
            if(str1[i]>str2[i])
                flag=1;
            if(str1[i]<str2[i])
                flag=-1;
            else
                flag=0;
            
        }else{
            break;
        }


 觉得有用的话采纳一下哈

for循环中当str1或str2比较到字符串终止符时,要设置flag=0,否则是死循环

for(i=0;flag==0;i++)
{
    if(str1[i]!='\0'&&str2[i]!='\0')
    {
        if(str1[i]>str2[i])
        flag=1;
        if(str1[i]<str2[i])
        flag=-1;
        else
        flag=0;
    }
    else if(str1[i] == '\0')
        flag = -1;
    else
        flag = 1;
}


    if(len1>len2)
    printf("%s>%s",str1,str2);
    if(len1<len2)           //应该是else ifprintf("%s<%s",str1,str2);
    else
    printf("%s=%s",str1,str2);


用了strlen完了不用strcmp?

char str1[100];
    char str2[100];
    printf("请输入字符串str1: ");
    gets(str1);
    printf("请输入字符串str2: ");
    gets(str2);
    int flag = 0;
    int i = 0;
    while (str1[i] != '\0' && str2[i] != '\0')
    {
        if(str1[i] > str2[i])
        {
            flag = 1;
            break;
        }
        else if(str1[i] < str2[i])
        {
            flag = -1;
            break;
        }
        i++;
    }
    if(flag == 0)
    {
        if(str1[i] != '\0' && str2[i] == '\0')
        {
            flag = 1;
        }
        else if(str1[i] == '\0' && str2[i] != '\0')
        {
            flag = -1;
        }
        else
        {
            flag = 0;
        }
    }

    if(flag == 1)
    {
        printf("%s>%s",str1,str2);
    }
    else if(flag == -1)
    {
        printf("%s<%s",str1,str2);
    }
    else
    {
       printf("%s=%s",str1,str2);
    }