2

ユーザーにファイル名の入力を求め、ファイルの内容をコンソールに表示するコードがあります。ただし、私が使用するprintf()ステートメントは最後まで出力されないため、ユーザーはファイル名を入力する必要がありません。

int main(int argc, char * argv[]){
printf("%s", "What file would you like to open?\t");
char filename[100];
scanf("%[^\n]", filename);
printf("You chose:\t%s\n", filename);
return 0;
}

プログラムは現在コンソールをスキャンしてから、両方のprintf()ステートメントを出力します。scanf()ステートメントは正しく機能しますが、適切なタイミングでは機能しません。私の問題は何ですか?

編集:プログラムはコマンドラインから実行すると正しく動作しますが、問題はEclipseで解決しません。

4

1 に答える 1

4

fflush(stdout);最初のprintfの後に追加してみてください。問題はprintfバッファをフラッシュしないことにあると思います。

編集: Eclipse の既知のバグのようです。回避策は、バッファー サイズをゼロに設定することです (コードのコメントを確認してください)。

于 2012-10-04T01:54:28.057 に答える