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の任意の組み合わせであると想定しています。
と同じ配列を検出しようとしています。私はしばらくこれをグーグルで検索しましたが、満足のいく答えは見つかりませんでした。
これは私が理解する初心者の質問です、あなたの忍耐に感謝します。
<string.h>
の標準のmemcmp
関数を使用します。
memcmp(a, b, sizeof(a)) == 0
a
とb
が等しいときはいつでも。
あなたが意味するなら
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つの方法に分けることができます、
質問番号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***
質問2の解決策:この問題にはmemcmpを使用できます。この問題の最善の解決策は、次のとおりです。
ここで、私は上記の問題に答えました https://stackoverflow.com/a/36130812/5206646