2013-11-20 58 views
-2

我想將數組存儲到元素。所以我使用二維數組,但似乎不工作。在這種情況下,我得到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"); 
} 

任何一個可以幫助我

+4

請考慮閱讀一些C教程資料,甚至是一本好書。目前,您的知識似乎存在相當大的差距。 :| – unwind

回答

1

我們稱之爲「串」,因爲這似乎是你是怎麼想他們,儘管英語新否則。

在C中,一個字符串是char陣列,其具有char,其值是0。

字符串是「分配」(複製)與strcpy()結束,因爲你不能直接分配整個陣列,通常。

這將意味着你最初的例子大概應該是這樣的:

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

這是很難確定的,因爲你不告訴我們什麼es是。

此外,字符串與strcmp()函數進行比較,您不能使用==來直接比較字符串(因爲它們是數組,並且數組無法與==進行比較)。

這意味着第二片斷應該是:

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

C沒有數組指派。您需要使用memcpy(或可能strncmp,這似乎的罕見箱子它實際上是適當的功能之一):

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

和C不支持與運營商相比陣列要麼,所以使用memcmp功能(或者可能是strncmp,這取決於您是否具有null結尾的字符串):

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

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