如何在数组中存储数组元素

时间:2013-11-20 14:36:54

标签: c arrays string

我想将数组存储到元素中。所以我使用了2-D阵列,但似乎无法正常工作。在这种情况下,我得到5个IEEE地址,即8字节的数组。我想根据第一个地址逐个存储

char a[5][8];
int i = 0;
if(data)
{
  a[i] = es->ieee;
  i++;
}

//它将收到5个不同的地址

我需要将那些IEEE地址与已存储的IEEE地址进行比较,例如,有5个IEEE地址

char First[8] = "0x32441";
char Second[8] = "0x42421";

if(a[1] == First)
{
  printf("it is matching in First");
}

任何人都可以帮助我

2 个答案:

答案 0 :(得分:1)

让我们称之为“字符串”,因为这似乎是你对它们的看法,尽管你不这样说。

在C中,字符串是char的数组,以char结尾,其值为0.

使用strcpy()“分配”(复制)字符串,因为通常不能直接分配整个数组。

这意味着您的初始示例可能应该是:

if(data)
  strcpy(a[i++], es->ieee);

很难确定,因为你没有告诉我们es是什么。

此外,字符串与strcmp()函数进行比较,您不能使用==直接比较字符串(因为它们是数组,并且数组也不能与==进行比较)。< / p>

这意味着第二个代码段应为:

if(strcmp(a[1], First) == 0)
  printf("it is matching First\n");

答案 1 :(得分:1)

C没有数组赋值。您需要使用memcpy(或可能strncmp,这似乎是罕见的案例之一,它实际上是适当的功能):

char a[5][8];
int i = 0;
if(data)
{
  memcpy(a[i], es->ieee, 8);
  i++;
}

并且C不支持将数组与运算符进行比较,因此请使用memcmp函数(或可能strncmp,具体取决于是否有空终止字符串):

char First[8] = "0x32441";
char Second[8] = "0x42421";

if(memcmp(a[1], First, 8) == 0)
{
  printf("it is matching in First");
}