我不断得到一个嵌套函数是禁止的错误。当我尝试使用指针时,我收到并报告错误“初始化使得指针来自整数而没有强制转换”。并且不确定那是怎么回事。 (使用-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;
}
答案 0 :(得分:3)
=
之后char ascii_art[5][5]
应该有char
,%c
打印%s
,而不是initialization makes pointer from integer without a cast
。
我无法重现i
错误,但您有几个未使用的变量,for(i; i < (5 * m); i++) {
中的第一个j=0
无效。你也可以把它留下来。 (与其他循环相同)。
至少在第二个循环中(第一个也不会受到伤害)你可能想写i=0
,否则只会为multiplier
执行内循环。
如果1
大于i
,您的代码也将失败,因为j
和5
将大于{{1}},您将尝试访问数组越界。
答案 1 :(得分:0)
到目前为止我发现的问题
1)您在声明ascii_art
后缺少=
2)你应该用
中的%c替换%s printf("%s", ascii_art[i][j]);
%s
用于打印以\0
结尾的字符串,对于单个字符,您需要使用%c
此外,我担心你会用这个乘数做坏事,因为你的循环停止条件是i< 5*m
而m是从scanf用户那里获得的。我看到只有两个有效的乘数选项,在这种情况下为0,1,任何其他值都将取出你的数组。