複数の空白を単一の空白に置き換えようとしています。
#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
ループをコメント アウトすると機能します (空白なしで 1 つの単語を記述した場合、正しい文字列が得られます)。私が望むのは、人が書き込むすべての文字を配列に入れることです。getchar()
この場合、関数を使用しても問題ありませんか? はいの場合、このコードを機能させるには何を変更する必要がありwhile
ますか? 私が言ったように、空白やループapple
なしで単語などを書くとうまくいきます。while