2016-02-04 66 views
0

我想有一個數組存儲2個項目,所以這將是最好的方式來做到這一點?如何存儲2個char數組的數組?

char array[5][2]= {{"data1","1"}, 
       {"data2","2"}, 
       {"data3","3"}, 
       {"data4","4"}, 
       {"data5","5"}}; 

,我怎麼會存儲在「數據2」的東西,「2」的例子嗎?

+1

情況下,我覺得應該是'字符數組[5] [2] [6] = ... '或'const char * array [5] [2]'。 – mch

+0

@mch抱歉,太快無法讀取... –

回答

0

你可以讓它變成一個二維char*陣列

char *array[5][2]= {{"data1","1"}, 
        {"data2","2"}, 
        {"data3","3"}, 
        {"data4","4"}, 
        {"data5","5"}}; 

然後更改字符串數據,你可以只訪問(編輯{"data2","2"}):

array[1][0] = "words", array[1][1] = "a"; 

基本上,當您使用第一組方括號array[1]的,這是訪問的行{"data2","2"},然後使用第二組方括號,你所訪問的行的內部部件。因此,array[1][0]最初爲"data2"array[1][1]最初爲"2"。就像array[2][0]將是"data3"array[2][1]將是"3"

1

二維字符數組不會在這裏工作,但結構數組會適合您的需要:

陣列 char

char arr1[6] = "data1";    // 1D array 

struct string_pairs 
    { 
     char str1[10]; 
     char str2[10]; 
    } array[] = {{"data1","x"}, 
       {"data2","x"}, 
       {"data3","x"}, 
       {"data4","x"}, 
       {"data5","x"}}; 
1

陣列陣列的char

char arr2[2][6] = { {"data1"},  // 2D array 
        {"1"}  }; 

陣列陣列陣列char

char arr3[5][2][6] = {{"data1","1"}, // 3D array 
         {"data2","2"}, 
         {"data3","3"}, 
         {"data4","4"}, 
         {"data5","5"}}; 

分配"dataX","X"數組的第二個元素爲

strcpy(arr[1][0], "dataX"); 
strcpy(arr[1][1], "X"); 
-1

我認爲這是一個典型的結構任務。 在我fiew,這應該工作:

struct strings // definition of a struct calld strings 
{ 
char[] a; 
char[] b; 
} 

struct strings arrayofstrings[n]; // instancing an array of structs 

arrayofstrings[i].a = {"data"}; // reference to the element "a" of the i-part of the array 
arrayofstrings[i].b = {"1"}; 

你可以創造的n結構 「串」

+0

'char [] a;'不會編譯。你的意思是'char a [10];'? 'arrayofstrings [i] .a = {「data」};'也是行不通的。 – mch

+0

你說得對,「{」「}」不是必須的,但爲什麼編譯器需要char [] a的常量? –