簡體   English   中英

在C中打印多維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM