为什么我无法打印空格字符?

时间:2013-01-23 20:39:20

标签: c

这是我的代码:

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");
    }

}

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

谢谢!

2 个答案:

答案 0 :(得分:6)

你继续用这条线把空间变成别的东西:

++space;

你期望做什么?你想把它变成一个多个空格的串吗?

您可以使用printf格式说明符来填充角色。试试这个:

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

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

:   A:

如果你只是想放一个空格,不要忘记你可以在格式字符串中放一个空格。就像着名的那样:

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

请注意那里有一个空格。

答案 1 :(得分:1)

这不是Java。 Strings中没有C。或者,您使用char[]。你不能说++space并期望space连接它自己。 ++spacespace = 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] = ' ';
}

FYI n完全没有做任何事情并浪费空间。对不起我的OCD感觉刺痛了。