人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

eclipse + CDTでC++言語をやっているのですがどうしても解決しない問題があるのでご質問させていただきます。

int main(void)
{
char str[80];
printf("文字列を入力してください:");
gets(str);
printf("入力された文字列は%sです", str);
return 0;
}

普通なら
文字列を入力してください:{ キーボードから入力された文字列 }
入力された文字列は{ キーボードから入力された文字列 }です

というようにprintf->gets->printfという処理となると思うのですが
eclipseのコンソールでは
{ キーボードから入力された文字列 }
文字列を入力してください:入力された文字列は{ キーボードから入力された文字列 }です

というようにgets->printf->printfという処理となってしまいます。
何か設定をしなければいけないのでしょうか?よろしくお願いします。

【開発環境】
Windows Pro
eclipse C/C++ Development Tools 3.3.1
MinGW-5.1.3
GDB-5.2.1-1
MSYS-1.0.10

●質問者: LIke
●カテゴリ:コンピュータ
✍キーワード:C++ C/C++ Char eclipse gdb
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● JULY
●35ポイント

fflush

gets の前に

fflush(stdout);

というのを入れてみたら直りませんか?

◎質問者からの返答

期待通りの結果が得られました。ありがとうございました。


2 ● しおり
●23ポイント

gets() の前に fflush(stdout) する必要があります。

それで期待通りの動作をするはずですが、gets() は使ってはいけない関数だし、そもそもそのプログラムは C++ 言語ではなく C 言語です。

◎質問者からの返答

期待通りの結果が得られました。ありがとうございました。


3 ● Mook
●22ポイント

処理系に依存した話だと思いますが、出力がキャッシュされてしまっているせいだと思います。

  char str[80];
  printf("文字列を入力してください:");
  fflush(stdout);
  gets(str);
  printf("入力された文字列は%sです", str);
  return 0;

のようにしてみてどうでしょうか。

http://www9.plala.or.jp/sgwr-t/lib/fflush.html

◎質問者からの返答

期待通りの結果が得られました。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ