繁体   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