我試圖用一個空白替換多個空格。用C中的getchar()函數掙扎
#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 500
main() {
char text[MAXLINE];
int i;
for(i = 0; (text[i] = getchar()) != EOF && text[i] != 'x'; i++) {
if(text[i] == ' ')
i++;
while((text[i] = getchar()) != EOF && text[i] != 'x' && text[i] == ' ');
if(text[i] == EOF || text[i] == 'x')
break;
}
text[i] = '\0';
printf("\n\n-- Result --\n%s", text);
}
我知道getchar()
需要一個字符enter
按下該按鈕之後,但我已經見過很多次,人們如何使用它,直到EOF
發現讓整個字符串。即使在這個例子中,如果我註釋掉while
循環(如果我寫一個沒有空白的單詞,我會得到一個正確的字符串),它就可以工作。我想要的是將一個人寫入數組中的每個字符。在這種情況下,getchar()
功能可以使用嗎?如果是的話,我需要在這段代碼中進行修改才能使它工作,因爲現在它只打印一些字符(如果while
循環未被註釋掉)?正如我所說,如果我寫一個字apple
或類似的沒有任何空白和沒有while
循環,它的工作原理。
請注意'main()'應該(必須)返回'int'。你應該測試溢出('我
Kninnug
謝謝。一旦我完成了目前的問題,我會解決這些問題。 – Stein
還要注意'getchar()',儘管它是非常通信的名稱,[不會*返回一個'char'](http://linux.die.net/man/3/getchar)(因爲'EOF'確實不適合字符)。 – unwind