我是編程新手,我決定從c開始。我正在使用K & R的書,並且有這個練習,它要求編寫一個程序,將輸入複製到輸出,用一個空白替換一個或多個空白。然而,當我編寫我的程序(我確信它不正確,但沒關係,因爲我在這裏學習),我想知道我做錯了什麼。還有一點需要注意的是:當我用3個空格鍵入我的名字時,它減少到2個,但是當使用兩個或一個空格時,沒有任何反應。代碼下面貼如何用一個空白替換c編程中的多個空白?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int c; // getchar value
int blanks = 0; // counting the amount of blanks. If more than one then replace with blanks_2
char blanks_2 = ' '; //character value for replacement in case blanks is more than one
printf("Enter your name please\n");
while((c = getchar()) != EOF){
if(c == ' '){
++blanks;
if (blanks >= 1){
putchar(blankos); }
}
if(c >= 'a' && c <= 'z'){
putchar(c);
}
if (c >= 'A' && c <= 'Z'){
putchar(c);
}
}
return 0;
}
你的意思是用一個空白替換連續的黑色,對不對? –
是的。這似乎不工作@chux。我之前做過類似的事情,但是這使得空白回到0.當寫我的名字時,我的名字沒有空格 – Thenoobienoob
給出的答案並不壞,但它們不能幫助你理解你的代碼有什麼問題。如果你是編程新手,學習跟蹤代碼很重要。因此,有些問題可以幫助您找到* your *代碼中的錯誤,而不是將其替換爲別人的代碼:如果您的輸入是'The ... noobie ..... noob'[[ =空格]?爲每個角色手動查看循環。跟蹤空白的價值,問問自己什麼時候應該做putchar,以及現在做什麼時候。當您在單詞2和單詞3之間時,會出現什麼情況? –