[英]How to Initialize a Multidimensional Char Array in C?
我正在嘗試將一些代碼從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指針,如下所示:
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]
(從零開始,第一個索引是行,第二個是列)。
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的指針。
我建議確定字符串的最大長度和每行的最大字符串數,並告訴編譯器,例如:
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 <stdio.h>
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.