0

編集:この質問は解決されました。すべての回答に感謝します

これは私のプログラムです:

#include <stdio.h>
int main(){

printf("write something : \n");
int c = getchar();

while((c = getchar()) != EOF){

if (c == ' ' || c == '\t')
 printf(" \n");
else
  putchar(c)
}
return 0;
}

実行するたびに正常に動作しますが、たとえばプログラムを実行すると、入力の最初の文字が消費され、出力は次のようになります。

write something : 
this is a sentence.
his 
is
a
sentence.

「t」がありません。なぜそれが起こっているのですか?どうすれば修正できますか?

お時間をいただきありがとうございます。

4

2 に答える 2

2

あなたはint c = getchar()どちらが を取得すると言います"t"。次に、を取得する
と言った場合、ステートメントで呼び出して以来、文字を出力する機会すら得られなかったことに注意してください。while (c = getchar())"h"getcharwhile

これを修正するには、宣言するint c = 0;か、int c;

getchar()次に、whileループを呼び出すと、最初の文字から開始されます。

于 2014-05-09T20:18:57.330 に答える
0

ラインで

int c = getchar()

「t」の値を取得します。ただし、電話するとき

while((c= getchar()) != EOF)

getchar が再度呼び出され、「h」が読み取られます。その後、初めてプチャーします。要約すると、putchar を呼び出す前に getchar を 2 回呼び出します。これに対する解決策は、呼び出すことです

int c = getchar();
putchar(c);

頂点で

于 2014-05-09T20:09:54.560 に答える