将2个数组存储在数据结构中

时间:2012-07-22 07:07:32

标签: c

我在流中有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个数组,或者是否存在另一种方式。

1 个答案:

答案 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;
}