我想将数组存储到元素中。所以我使用了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");
}
任何人都可以帮助我
答案 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");
}