2013-01-23 83 views
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"); 
    } 

} 

能否請你告訴我,我應該做的,所以我可以打印空格字符?

謝謝!

+0

++空間是什麼?將其刪除,並且空間將被正確打印。 – rburny

+0

'++空間'應該做什麼?你正在增加一個字符,這意味着'space + 1'是'! ','space + 2'是''''...這是期望的行爲嗎? – ApproachingDarknessFish

+0

即時嘗試增加空間,所以它將在第一個循環中有4個空格,第二個等3 ..我意識到謝謝 – MNY

回答

6

你不停地轉動的空間與線別的東西:

++space; 

你是怎麼想到做什麼?您是否想讓它成爲一個多個空格的字符串

您可以使用printf格式說明符來左鍵填充您的字符。試試這個:

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

這將輸出3位的字母A:

: A: 

如果你只是希望把在一個空間,不要忘記你可以把一個空間,在格式字符串。在着名的:

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

請注意有一個空間在那裏。

+0

嗨,感謝您的快速回復我試圖添加另一個空格字符@paddy – MNY

+0

實際上我需要打印的是由用戶輸入創建的金字塔。需要使用一個嵌套循環來創建它,所以我雖然在第一個循環中創建了我需要的空間數量,但是在下一個謝謝中,等等..這是正確的方向嗎?@paddy – MNY

+0

而不是執行' ++空間',你可以做'printf(「」)'或'putc('')'或者你可以使用我給你展示的width-specifier技巧,不要在循環中做間隔,我不明白爲什麼你需要打印尾隨空格。 – paddy

1

這不是Java。 C中沒有Strings。或者,您使用char[]。你不能說++space和期望space連接它的自我。 ++spaceC中的space = space + 1相同。如果我不正確,這樣做會爲它的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完全無所作爲而浪費空間。抱歉,我的強迫症感覺刺痛。

+1

感謝分配好友。你的解釋有幫助! @羅布艾弗裏四 – MNY

相關問題