0

K&R を使って、C について頭を悩ませようとしています。文字が「a」でない限り、ユーザーの前の行を画面に出力するプログラムを書きたいと思います。

int main(){

int c;

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

     if(c!='a')
            putchar(c);
}
return 0;
}

はい、プログラムはそれほど多くありません。しかし、それは意図したとおりには機能しません。上記のコードは、a であるかどうかに関係なく、すべての文字を出力するだけなので、文字「a」の ASCII 値を使用する必要がありますか。

4

1 に答える 1

1

getcharコードは指定どおりに機能するはずですが、while ループを使用すると、a が入力されたときにキャリッジ リターンが出力されることがわかります。これは、現在の実装でgetcharは、入力バッファーが空になるまで読み取り続けるためです。これを停止したい場合は、if ステートメントでフラッシュできます。

現時点でテキストの文字列を入力すると、*a*s を削除して文字列が出力されます

于 2011-07-18T23:50:45.393 に答える