[英]Print multidimensional array in c
我正在嘗試創建一個多維數組以在其中保留字符串,長度為5。但是,當我嘗試從數組中打印出單個元素時,這似乎是個問題。
在我的printf("%s", a[0][0][5])
它應該在char array
打印出“ hej0”,最后一個[5]
代表當前元素+'\\ o'第一和第二[]
代表行,並且要定位哪個元素?
當我嘗試編譯此代碼時,它將崩潰。
int main() {
char a[3][4][5] = {
{"hej0", "hej1", "hej2", "hej3"} ,
{"hej4", "hej5", "hej6", "hej7"} ,
{"hej8", "hej9", "hej10", "hej11"}
};
printf("%s", a[0][0][5]);
return 0;
}
如果您這樣做:
printf("%s", a[0][0][5]);
您正在嘗試訪問a[0][0]
指向的字符串的第六個字符,即"hej0"
。 它有4個字符,第五個是NULL終止字節\\0
(因此,您嘗試讀取的字符串之外)。
要打印"hej0"
:
printf("%s", a[0][0]);
我看到的第一個問題是您的代碼是數組的大小應為a[3][4][6]
而不是a[3][4][5]
。 因為您的元素"hej10"
, "hej11"
需要6個字節(而不是5個字節)。另外,要打印任何特定元素,只需提供以下基地址即可:
printf("%s", a[0][0]);
第一個問題是,如果要將5個char字符串放入char數組中,則需要使該數組大6個chars,因為它以字符'\\0'
終止。
第二個問題是, a[0][0][5]
是第三行的第六個元素,不存在。
第三個問題是,如果要打印完整的字符串,則不應指定用於輸出的字符數。 嘗試使用a[0][0]
代替a[0][0][5]
這是一個更正:
char a[3][4][6] = {
{ "hej0", "hej1", "hej2", "hej3" },
{ "hej4", "hej5", "hej6", "hej7" },
{ "hej8", "hej9", "hej10", "hej11"}
};
printf("%s", a[0][0]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.