打印星号字符会在 C 中打印损坏的字符

Printing asterisk char prints broken character in C

我正在尝试打印一个星号,但它在终端打印中打印了一个 broken/special 字符。 我将char变量初始化为空

char asterisk = "";

并根据以下结果进行设置:

asterisk = (cube % 3 == 0) ? "*[=11=]" : "";

并使用

打印
printf("%d%c\n", cube, asterisk);

相反,我得到了输出

Enter an integer
2000
0§
1
8
27§
64
125
216§
343
512
729§
1000
1331
1728§

我尝试在三级运算符行的非空字符的赋值中添加转义序列,但这并没有解决问题。对于任何简单的错误,我深表歉意,我是 C 的新手。

您的星号不是 char,它是一个字符串(char*,用双引号表示)。如果要正确打印,应该使用%s,而不是%c:

printf("%d%s\n", cube, asterisk);
/* Here --^ */