看我表演了 发表于 2022-2-12 16:54:26

求大佬康康

写一个程序模仿 strncmp 函数的实现比较两个字符串 s1 和 s2,需要满足以下要求。8yv64-wQ
BUq}Q o5_KFIE>Ym+uCf&i8["<Jj
要求 A:如果 s1 > s2,输出一个正数,值是两个不同字符的差;r^g5eX
要求 B:如果 s1 = s2,输出 0;A!gzLGit
要求 C:如果 s1 < s2,输出一个负数,值是两个不同字符的差。


#include <stdio.h>
#include <windows.h>

#define MAX 1024

int main()
{
       unsigned int n;
       int i = 0;
       char str1;
       char str2;
       
       printf("Çëêäèëμúò»¸ö×Ö·û′®£o");
       while(str1 = getchar() != '\n')
       {
              i++;
       }
       
       i = 0;
          
          printf("Çëêäèëμú¶t¸ö×Ö·û′®£o");
          while(str2 = getchar() != '\n')
       {
              i++;
       }
       
       printf("Çëêäèë±è½ÏμÄ×Ö·ûêy£o");
       scanf("%u", &n);
       
       for(i = 0; i < n; i++)
       {
              if(str1 - str2)
              {
                     break;
                  }
       }
       
       printf("μú%d¸ö×Ö·ûÏà2î:%d\n", i + 1, str1 - str2);
       
       system("pause");
       
       return 0;
}


上面是自己写的,为啥显示的结果总是0呢?

傻眼貓咪 发表于 2022-2-12 17:44:34

可以试试看:#include <stdio.h>

int compare(const char *A, const char *B){
    int i;
    for(i = 0; A || B; i++) if(A != B) break;
    return A - B;
}

int main()
{
    char A = "Hello";
    char B = "Hello";
    char C = "World";
   
    printf("compare A and B = %d\n", compare(A, B));
    printf("compare B and C = %d\n", compare(B, C));

    return 0;
}compare A and B = 0
compare B and C = -15

看我表演了 发表于 2022-2-13 12:57:42

傻眼貓咪 发表于 2022-2-12 17:44
可以试试看:

我是while里面有个括号忘记打了

傻眼貓咪 发表于 2022-2-13 13:02:45

看我表演了 发表于 2022-2-13 12:57
我是while里面有个括号忘记打了

{:10_277:}{:10_277:}{:10_254:}

看我表演了 发表于 2022-3-1 20:40:25

傻眼貓咪 发表于 2022-2-13 13:02


{:10_245:}{:10_282:}
页: [1]
查看完整版本: 求大佬康康