编写函数mystrcmp()实现两个字符串的比较,并在主函数中测试

编写函数mystrcmp()实现两个字符串的比较,并在主函数中测试
不出结果,我可能在前面就错了


#include 
int mystrcmp(char s1[],char s2[]) {
    int i,k;

for(i=0;s1[i]==s2[i];i++)
k=0;
if(s1[i]>s2[i]) k=1;
if(s1[i]-1;
return k;
}

int main(){
    char s1[5];
    char s2[5];
    int k;
    gets (s1);
    gets (s2);
    k=mystrcmp(s1[5],s2[5]);
    printf("%d\n",k);
    return 0;
    
}

给你改了

#include <stdio.h>
#include <string.h>
int mystrcmp(char s1[], char s2[]) {
    int i,k,l1=strlen(s1),l2=strlen(s2);
    int len = l1<l2?l1:l2;
    for(i=0;i<len;i++){
        if(s1[i]>s2[i]) return 1;
        if(s1[i]<s2[i]) return -1;
    }
    if(l1==l2) return 0;
    else if(l1<l2) return -1;
    else return 1;
}
 
int main(){
    char s1[5];
    char s2[5];
    int k;
    gets(s1);
    gets(s2);
    k=mystrcmp(s1,s2);
    printf("%d\n",k);
    return 0;
    
}

修改如下,供参考:

#include <stdio.h>
int mystrcmp(char s1[],char s2[]) {
    int i = 0,k = 0;
    while (s1[i] && s1[i] == s2[k]) i++,k++; //修改
    if (s1[i] - s2[k] > 0)      //修改
        return 1;
    else if (s1[i] - s2[k] == 0) //修改
        return 0;
    else                         //修改
        return -1;
    //for(i=0;s1[i]==s2[i];i++)
    //    k=0;
    //if(s1[i]>s2[i]) k=1;
    //if(s1[i]<s2[i]) k=-1;
    //return k;
}

int main(){
    char s1[5];
    char s2[5];
    int k;
    gets (s1);
    gets (s2);
    k=mystrcmp(s1,s2); // k=mystrcmp(s1[5],s2[5]); //修改
    printf("%d\n",k);
    return 0;
}