C 比较两个相同长度的int数组的最佳方法?
比较int数组b和c与a的最佳方法是什么:C 比较两个相同长度的int数组的最佳方法?,c,arrays,compare,int,c99,C,Arrays,Compare,Int,C99,比较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功能 每当a和b相等时。使用循环并逐个比较各个元素。如果您的意思是 int a[] = {0,1,0,0,1}; int b[
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
功能
每当
a
和b
相等时。使用循环并逐个比较各个元素。如果您的意思是
int a[] = {0,1,0,0,1};
int b[] = {0,1,0,0,1};
int c[] = {1,1,0,0,1};
然后
关于这个问题需要更多的信息。 我可以把你的问题分为以下两种方式
问题1的解决方案: 可以使用memcmp解决此问题。因为memcmp将比较字典,并返回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***
#包括
#包括
int main()
{
字符a[]={'a','b','c'};
字符b[]={'a','b','c'};
int x=memcmp(a,b,sizeof(a));
printf(“%d\n”,x);
返回0;
}
***输出:0***
#包括
#包括
int main()
{
字符a[]={'a','c','b'};
字符b[]={'a','b','c'};
int x=memcmp(a,b,sizeof(a));
printf(“%d\n”,x);
返回0;
}
***产出:1***
#包括
#包括
int main()
{
字符a[]={'a','b','c'};
字符b[]={'b','a','c'};
int x=memcmp(a,b,sizeof(a));
printf(“%d\n”,x);
返回0;
}
***输出:-1***
问题2的解决方案:
可以使用memcmp解决此问题,解决此问题的最佳方案如下所示
在这里,我回答了上面的问题
次要注意:如果
int
类型中有填充位,memcmp()
可能会产生假阴性。幸运的是,OP不太可能在这样的实现中运行。@J.C.Salomon:What's padding bits inint
type”?在这种情况下,在C中使用memcmp是不可靠的,因为可能存在padding bits。当然,除了@无用这是真的,但这也是一种误导。我说的是整数本身的填充位。在这种情况下,在C中使用memcmp是不可靠的,因为可能存在填充位。当到达其中一个数组的末尾时,不要忘记退出循环,以防大小不同
memcmp(a, b, sizeof(a)); /* returns zero for a match */
memcmp(a, c, sizeof(a)); /* returns nonzero for no match */
#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***