如何在C中初始化多维Char数组?

我正在尝试将一些代码从C#转换为C,以便将其刻录到微控制器上。

请问有人可以告诉我如何将C#中的二维字符串数组转换为C语言中的某些内容?

我的C#代码如下所示:

string[,] DirectionPosition = {{"00", "10", "", "01", ""}, {"01", "11", "", "02", "00"}, {"02", "12", "", "03", "01"}, {"03", "13", "", "04", "02"}, {"04", "14", "", "", "03"}, {"10", "20", "00", "11", ""}, {"11", "21", "01", "12", "10"}, {"12", "22", "02", "13", "11"}, . . . . {"44", "", "34", "", "43"},}; 

而且,我将如何访问元素? 在C#中,如果我想要第三行中的第二个元素,那么它只是DirectionPosition [2,1],但是当C中没有字符串的情况下,更少的2-D字符串数组是什么呢?

 char DirectionPosition[][ 5 ][ 3 ] = {{"00", "10", "", "01", ""}, {"01", "11", "", "02", "00"}, {"02", "12", "", "03", "01"}, {"03", "13", "", "04", "02"}, {"04", "14", "", "", "03"}, {"10", "20", "00", "11", ""}, {"11", "21", "01", "12", "10"}, {"12", "22", "02", "13", "11"}, . . . . {"44", "", "34", "", "43"},}; 

C没有内置的字符串类,你必须使用字符数组。 您也可以使用指向char的指针。

最简单的方法是使用char指针,如下所示:

 char *DirectionPosition[9][5] = { {"00", "10", "", "01", "" }, {"01", "11", "", "02", "00"}, {"02", "12", "", "03", "01"}, {"03", "13", "", "04", "02"}, {"04", "14", "", "", "03"}, {"10", "20", "00", "11", "" }, {"11", "21", "01", "12", "10"}, {"12", "22", "02", "13", "11"}, {"44", "", "34", "", "43"} }; 

第一行中的元素“10”被引用为DirectionPosition[0][1] (从零开始,第一个索引是行,第二个是列)。

我建议确定字符串的最大长度和每行的最大字符串数,并告诉编译器,例如:

 typedef char string[3]; typedef string s5[5]; s5 DirectionPosition[] = {{"00", "10", "", "01", ""}, {"01", "11", "", "02", "00"}, {"02", "12", "", "03", "01"}, {"03", "13", "", "04", "02"}, {"04", "14", "", "", "03"}, {"10", "20", "00", "11", ""}, {"11", "21", "01", "12", "10"}, {"12", "22", "02", "13", "11"}, {"44", "", "34", "", "43"},}; 

现在,DirectionPosition [2] [1]&c将允许您访问矩阵中的特定字符串。

没有所有额外的括号,有一种稍微简单的方法:

 #include  int main(int argc, char **argv) { char DirectionPosition[][ 5 ][ 3 ] = {"00", "10", "", "01", "", "01", "11", "", "02", "00", "02", "12", "", "03", "01", "03", "13", "", "04", "02", "04", "14", "", "", "03", "10", "20", "00", "11", "", "11", "21", "01", "12", "10", "12", "22", "02", "13", "11", "44", "", "34", "", "43"}; printf("dp[1][1] == %s\n", DirectionPosition[1][1]); printf("dp[1][2] == %s\n", DirectionPosition[1][2]); printf("dp[1][3] == %s\n", DirectionPosition[1][3]); return; }