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

将int数组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相同的数组。 我用谷歌搜索了一段时间,但没有找到满意的答案。

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

使用的标准memcmp函数。

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

每当ab相等时。

如果你的意思是

 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 */ 

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

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

  1. 比较数组内容考虑顺序? 例:char a [] = {a,b,c},b [] = {a,c,b}这里因为你考虑了顺序,内容不一样所以a!= b

  1. 比较数组内容而不管顺序? 例:char a [] = {a,b,c},b [] = {a,c,b}这里如果你不考虑订单,内容相同所以a == b

问题1的解决方案:可以使用memcmp解决此问题。 因为memcomp将比较词典并返回0或1或-1,如下所示

  #include #include 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 #include 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 #include 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