0

我有 2 个语言代码进入流。我将它存储在一个 3 字节的 char 数组中(unsigned char a[3])。我想将它与存储在指针(unsigned char *c)中的另一个值进行比较。数组 a[3] 存储在结构(struct s[2])中以获取多个数据 - 这对我来说是否正确与数组有点混淆 - 不能使 const 指针指向另一个位置,因为它已经指向一个位置。但是将数组包含在结构中并使结构数组的第 zeorth 元素指向一个位置,并且结构数组的第一个元素是可能的。我的理解是否正确。

我想存储 2 个数组值。所以我声明了一个结构,其中我声明了 3 字节字符数组。这种做法是否正确。有没有其他方法可以做到这一点。

编辑:

   #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 个数组,或者是否有另一种方法来解决这个问题。

4

1 回答 1

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;
}
于 2012-07-22T08:17:52.827 回答