比较两个相同长度的int数组的最佳方法是什么?

时间:2012-02-02 21:12:49

标签: c arrays compare int c99

将数组b和c与a:

进行比较的最佳方法是什么?
int a[] = {0,1,0,0,1};
int b[] = {0,1,0,0,1};
int c[] = {1,1,0,0,1};

b和c只是示例,假设它们可以是0和1的任意组合。

我正在尝试检测与a相同的数组。我用谷歌搜索了一段时间,但没有找到满意的答案。

这是我意识到的初学者问题,感谢您的耐心等待。

4 个答案:

答案 0 :(得分:26)

使用memcmp中的标准<string.h>功能。

memcmp(a, b, sizeof(a)) == 0

只要ab相等。

答案 1 :(得分:5)

如果你的意思是

int a[] = {0,1,0,0,1};
int b[] = {0,1,0,0,1};
int c[] = {1,1,0,0,1};

然后

memcmp(a, b, sizeof(a)); /* returns zero for a match */
memcmp(a, c, sizeof(a)); /* returns nonzero for no match */

答案 2 :(得分:4)

使用循环并逐个比较各个元素。

答案 3 :(得分:0)

关于这个问题需要更多信息..! 我可以通过以下两种方式划分你的问题,

  1. 考虑顺序比较数组内容? Ex:char a [] = {a,b,c},b [] = {a,c,b}这里因为你考虑顺序,内容不一样所以 a!= b < / EM>
    1. 比较数组内容而不管顺序? 例如:char a [] = {a,b,c},b [] = {a,c,b}此处如果您不考虑订单,内容相同,所以 a == b < / EM>
    2. 问题1的解决方案: 一个人可以使用memcmp来解决这个问题。因为 memcomp 会比较词典,并返回0或1或-1,如下所示

       #include<stdio.h>
          #include<string.h>
          int main()
          {
      
              char a[]={'a','b','c'};
              char b[]={'a','b','c'};
              int x=memcmp(a,b,sizeof(a));
              printf("%d\n",x);
      
          return 0;
          }
      ***output:0***
      
          #include<stdio.h>
          #include<string.h>
          int main()
          {
      
              char a[]={'a','c','b'};
              char b[]={'a','b','c'};
              int x=memcmp(a,b,sizeof(a));
              printf("%d\n",x);
      
          return 0;
          }
      ***output:1***
      
          #include<stdio.h>
          #include<string.h>
          int main()
          {
      
              char a[]={'a','b','c'};
              char b[]={''b,'a','c'};
              int x=memcmp(a,b,sizeof(a));
              printf("%d\n",x);
      
          return 0;
          }
      ***output:-1***
      

      问题2的解决方案: 一个人可以使用memcmp来解决这个问题,这个问题的最佳解决方案如下所示

      我在这里回答了上述问题 https://stackoverflow.com/a/36130812/5206646