簡體   English   中英

打印二維字符數組

[英]printing 2D character array

我不斷收到嵌套函數被禁止的錯誤。 當我也嘗試使用指針時,我收到並報告錯誤:“初始化使指針從整數開始而沒有強制轉換。” 並不確定發生了什么。 (使用-ansi和-pedantic)

#include <stdio.h>
#include <stdlib.h>


void createArt(int m) {
int i = 0, j =0, k = 1, l = 1;

char ascii_art[5][5] {
    {'/','/','/','/','/'},
    {'/','/','/','/','/'},
    {'/','/','/','/','/'},
    {'/','/','/','/','/'},
    {'/','/','/','/','/'}
};  

for(i; i < (5 * m); i++) {
    for(j; j < (5 * m); j++) {
        printf("%s", ascii_art[i][j]); /* can't print out chars */
    }
}
}

int main() {
int multiplier = 0, m = 1;

printf("Enter a number: ");
scanf("%d", &multiplier);

createArt(multiplier);

return 0;
}

char ascii_art[5][5]char s用%c而不是%s打印后應該有一個=

我無法initialization makes pointer from integer without a cast重現initialization makes pointer from integer without a cast錯誤,但是您有幾個未使用的變量,並且for(i; i < (5 * m); i++) {的第一個i無效。 您也可以忽略它。 (與其他循環相同)。

至少在第二個循環中(第一個也不會),您可能想要寫j=0 ,否則內部循環將僅在i=0執行。

如果multiplier大於1 ,您的代碼也會失敗,因為ij會變得大於5並且您將嘗試訪問數組越界。

我到目前為止發現的問題

1)您缺少=聲明ascii_art后

2)您應將%s替換為%c

 printf("%s", ascii_art[i][j]); 

%s用於打印以\\0結尾的字符串,對於單個字符,您需要使用%c

另外,由於循環停止條件是i< 5*m並且使用scanf從用戶獲得i< 5*m ,因此恐怕您會對該乘數做不好的事情。 在這種情況下,我只看到兩個有效的乘法器選項,0、1以及其他任何值將從數組中取出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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