3

这是我的代码:

int main(void)
{

    int i, j, k, n;
    char userLatter, space;
    printf("please enter an uppercase letter:\n");
    scanf("%c", &userLatter);
    n = 9;

    for (i = 0; i < 5; i++)
    {
        space = ' ';
        for (j = 5; j > i; j--)
        {
            ++space;
        }


        for (k = 0; k <= i ; k += 1)
        {
            printf("%c%c%c", space, userLatter, space);
        }
        printf("\n");
    }

}

你能告诉我我应该怎么做才能打印空格字符吗?

谢谢!

4

2 回答 2

6

你不断地用这条线把空间变成别的东西:

++space;

你期望它做什么?您是否试图使其成为多个空格的字符串

您可以使用printf格式说明符左填充您的字符。试试这个:

int width = 4;
char letter = 'A';
printf( ":%*c:\n", width, letter );

这将输出 3 个空格和字母 A:

:   A:

如果你只是想放一个空格,别忘了你可以在格式字符串中放一个空格。正如著名的:

printf( "Hello, world!\n" );

注意里面有空格。

于 2013-01-23T20:42:52.327 回答
1

这不是 Java。中没有StringsC或者,您使用char[]. 你不能说++space并期望space连接它的自我。++space和中说的space = space + 1一样C。如果我不正确,这样做会给它的 ASCII 值加 1。space是一个字符,一次只能保存一个字符。如果您希望它包含多个字符,则必须将其设为数组。这是一个替代方案:

char space[5]; //This would be done at the top when you initialize it
/* Many lines of code later */
for(j = 5; j > i; j--){
    space[j] = ' ';
}

仅供参考,n完全没有做任何事情,而且在浪费空间。抱歉,我的强迫症感觉很刺痛。

于 2013-01-23T20:56:50.407 回答