输出菱形结果只有空行

问题遇到的现象和发生背景

想输出一个5X5的菱形,结果只有空行

问题相关代码,请勿粘贴截图
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
    char diamond[5][5] = { {' ',' ',' * '},{' ',' * ',' ',' * '},{' * ',' ',' ',' ',' * '},{' ',' * ',' ',' * '},{' ',' ',' * '} };
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            printf("%c", diamond[i][j]);
        }
        printf("\n");
    }
    return 0;
}

运行结果及报错内容

img

我想要达到的结果

输出一个菱形

在初始化数组时,你的单引号内的除了*,还有空格,去掉多余空格就好了。如下:

char diamond[5][5] = { {' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'} };

修改见注释,' * ' 这样占了3格,不是字符,是字符串了。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
    char diamond[5][5] = { {' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'} };
    // char diamond[5][5] = { {' ',' ',' * '},{' ',' * ',' ',' * '},{' * ',' ',' ',' ',' * '},{' ',' * ',' ',' * '},{' ',' ',' * '} };
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            printf("%c", diamond[i][j]);
        }
        printf("\n");
    }
    return 0;
}