2016-02-04 67 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的常量? –