我正在尝试编写一个程序,它接受用户输入的字符串并将它们打印为 7 x 5 星号网格。我目前正在尝试弄清楚如何打印字母,因为我需要逐行打印它们以便并排打印不同的字母。
无论如何,到目前为止我的尝试是这样的:
#include <stdio.h>
#include <string.h>
char capitalA[7][5] = {
" * ",
" * * ",
"* *",
"*****",
"* *",
"* *",
"* *"
};
int i;
int j;
int main()
{//main
for (i = 0; i < 5 ; i++)
{
for (j = 0; j < 7 ; j++)
{
printf("%s\n", capitalA[j][i]);
}
}
return (0);
}//*main
我想要的输出是星号 A,但出现了段错误。
最佳答案
char capitalA[7][5]
不够大。您在初始化中使用的字符串文字自动包含 \0
字符,因此您需要使用
char capitalA[7][6]
相反。并将您的循环更改为单个循环
for (j = 0; j < 7 ; j++)
printf("%s\n", capitalA[j]);
因为现在您正在使用 %s
说明符显示 char
。
如果您对自动添加的 '\0'
不满意并且需要节省空间,您可以使用您当前拥有的代码或者您需要使用大括号初始化来初始化数组
char capitalA[7][5] = {{' ', ' ', '*', ' ', ' '}, ...};
并坚持通过 char
显示字符 char
(确保使用 '%c'
说明符而不是 '%s'
).
关于c - 段错误,数组打印C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33317745/