ストリームに2つの言語コードが入っています。これを3バイトのchar配列(unsigned char a [3])に格納しています。ポインタに格納されている別の値(unsigned char * c)と比較したかったのですが、配列a [3]は構造体(struct s [2])内に格納され、複数のデータを取得します-これは正しいですか配列として少し混乱しています-constポインターはすでに場所を指しているため、別の場所を指すようにすることはできません。ただし、構造体の内部に配列を含め、構造体配列のzeorth要素を1つの場所と、構造体配列の1番目の要素を指すようにすることは可能です。私が持っている理解は正しいですか。
2つの配列値を格納したかったので、3バイトのchar配列を宣言した構造体を宣言しました。この方法は正しいですか。それを行う別の方法はありますか?
編集:
#include<stdio.h>
int main(){
int i,flag=0,count=0;
struct n{
unsigned char b[3];
};
unsigned char *d=NULL;
struct s{
unsigned char *a;
};
struct s m[2];
struct n w[2];
// memcpy(w[0].b,"eng",sizeof("eng"));
// memcpy(w[1].b,"fre",sizeof("fre"));
strcpy(w[0].b,"eng");
strcpy(w[1].b,"fre");
d = w[1].b; // current lang
m[0].a = w[0].b; // storing the 2 lang in a pointer inside a structure
m[1].a = w[1].b;
i=0;
printf("\nm[0].a:%s\n",m[0].a);
printf("\nm[1].a:%s\n",m[1].a);
printf("\nw[0].b:%s\n",w[0].b);
printf("\nw[1].b:%s\n",w[1].b);
while((m[i].a) && d){ // And comparing
if(m[i].a++ != d++){
flag =1; //if strings are unequal break;
break;
}
i++;
}
if(flag){
printf("Not equal\n");
}
else{
printf("\nEqual\n");
flag =0;
}
return 0;
}
o / p:
m[0].a:engfre
m[1].a:fre
w[0].b:engfre
w[1].b:fre
Not equal
しかし、それが等しくないことを示す間違いがあります。構造内のポインタに配列を格納するこの方法は正しい方法ですか。またはこれを行う他の方法はありますか。
編集:
2つの弦を比較したかった。2つの文字列は等しいですが、私はそれを等しくないと思っています。ポインタは2つの配列を格納するための構造体に格納する必要がありますか、それともこれを行う別の方法がありますか。