0
#include<stdio.h>
int main()
{
 unsigned char a[3];
 unsigned char b[3];
 int *l[3]=NULL;
 int i = 0;

 a[0]=0;
 a[1]=1;
 a[2]=2;
 b[0]=3;
 b[1]=4;
 b[2]=5;

 l[0]=&a;
 l[1]=&b;
 if(strcmp(l[0],l[1])==0) {
   printf("Compared not same");
 }
 return 0;
}

配列 "l" 内に配列を格納したいと考えています。また、インデックス 0 とインデックス 1 に格納されている配列を比較するには、エラーが発生します。助けてください。

4

4 に答える 4

1
#include<stdio.h>
int main()
{
 unsigned char a[3];
 unsigned char b[3];
 unsigned char *l[2];

 a[0] = 0; a[1] = 1; a[2] = 2;
 b[0] = 3; b[1] = 4; b[2] = 5;

 l[0] = a; l[1] = b;
 if(strncmp(l[0], l[1], 3) != 0) {
   printf("Compared not same");
 }
 return 0;
}
于 2012-07-20T08:06:28.217 に答える
1
#include<stdio.h>
int main()
{
  unsigned char a[3];
  unsigned char b[3];
  unsigned char *l[2];

  a[0] = '3'; a[1] = '4'; a[2] = '\0';
  b[0] = '3'; b[1] = '4'; b[2] = '\0';

  l[0] = a; l[1] = b;
  if(strcmp(l[0], l[1]) != 0) {
    printf("Compared not same");
  } else {
    printf("Compared same");
  }
  return 0;
}
于 2012-07-20T08:28:46.087 に答える
0

配列を array に格納することについてはわかりませんが、memcmp代わりにを使用strcmpして配列を比較する必要がstrcmpあります ( は文字列を比較し、配列は文字列ではないため)。

 unsigned char a[3];
 unsigned char b[3];
 unsigned char *l[2]; // note: corrected a few errors in this line
 int i = 0;

 a[0]=0;
 a[1]=1;
 a[2]=2;
 b[0]=3;
 b[1]=4;
 b[2]=5;

 l[0]=a;
 l[1]=b;
 if(memcmp(l[0],l[1], sizeof(a))==0) { // note: have to specify the length
   printf("Compared same"); // note: reveresed the logic
 }
于 2012-07-20T10:35:38.890 に答える
0
int main()
{
    char a[3] = {1, 1, 2};
    char b[3] = {1, 4, 5};
    char *l[2]= {a, b};

    printf( (strncmp(l[0], l[1], 3)==0) ? "Compared are equal" : "Compared are not equal");

 return 0;
}

また、0 は行の終わりであるため、char の配列 [0, 1, 2] と [0, 5, 5] は等しいことに注意してください。また、そのような配列に 0 がない場合、無限配列になり、この配列ではないメモリから値を取得しようとするため、エラーが発生する可能性があります。言語の基本に関する優れた c/c++ の本から始める必要があります。

于 2012-07-20T08:26:07.737 に答える