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

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/11/22 15:35:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント35pt

fflush

gets の前に

 fflush(stdout);

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

id:LIke

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

2007/11/22 15:34:10
id:Bookmarker No.2

回答回数191ベストアンサー獲得回数34

ポイント23pt

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

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

id:LIke

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

2007/11/22 15:34:25
id:Mook No.3

回答回数1314ベストアンサー獲得回数393

ポイント22pt

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

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

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

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

id:LIke

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

2007/11/22 15:34:30

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • *日記帳* - EclipseCDT設定 2009-02-17 20:18:29
    EclipseCDT設定 プログラミングという科目で、C言語を学習するのだけどそこでの指定エディタがMeadow(Emacs)+Cygwin。 使いこなせばそれにこした事はないのだけど、コマンド覚えるのめんど(略)、
  • [コンピュータ] プログラミングという科目で、C言語を学習するのだけどそこでの指定エディタがMeadow(Emacs)+Cygwin。 使いこなせばそれにこした事はないのだけど、コマンド覚えるのめんど(略
  • [コンピュータ] プログラミングという科目で、C言語を学習するのだけどそこでの指定エディタがMeadow(Emacs)+Cygwin。 使いこなせばそれにこした事はないのだけど、コマンド覚えるのめんど(略
  • *日記帳* - EclipseCDT設定 2009-02-17 21:07:28
    EclipseCDT設定 プログラミングという科目で、C言語を学習するのだけどそこでの指定エディタがMeadow(Emacs)+Cygwin。 使いこなせばそれにこした事はないのだけど、コマンド覚えるのめんど(略)、
  • *日記帳* - EclipseCDT設定 2009-02-19 14:30:30
    EclipseCDT設定 プログラミングという科目で、C言語を学習するのだけどそこでの指定エディタがMeadow(Emacs)+Cygwin。 使いこなせばそれにこした事はないのだけど、コマンド覚えるのめんど(略)、
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません