[英]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
,您的代碼也會失敗,因為i
和j
會變得大於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.