我在流中有2个语言代码。我将它存储在一个3字节的char数组中(unsigned char a [3])。我想将它与存储在指针中的另一个值(unsigned char * c)进行比较。数组a [3]存储在结构(struct s [2])中以获取多个数据 - 这是正确的,因为我是有点困惑的数组 - const指针不能指向另一个位置,因为它已经指向一个位置。但是在结构中包含数组并使结构数组的zeorth元素指向一个位置并且结构数组的第一个元素是可能的。我的理解是否正确。
我想存储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个数组,或者是否存在另一种方式。
答案 0 :(得分:2)
#include <stdio.h>
#include <string.h>
int main(){
int i,flag=0,count=0;
struct n{
unsigned char b[4];
};
struct s{
unsigned char *a;
};
unsigned char *d=NULL;
struct s m[2];
struct n w[2];
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;
for (i =0; i <= 1; i++) {
printf("\nm[%d].a: %s d: %s\n", i, m[i].a, d);
if (strcmp(m[i].a, d) != 0) {
printf("Not equal\n");
}
else{
printf("\nEqual\n");
}
}
return 0;
}