ページ 11

英単語の訳の表示が消える

Posted: 2017年2月04日(土) 09:12
by Ohagi
端末で英単語帳を作成しています。

コード:

void read_mode(Engdata engdata[], int n) {
  int i;
  char buff[32];

  for (i = 0; i < n; i++) {
    printf("%s %s", engdata[i].eword, engdata[i].pronun);
    fgets(buff, sizeof(buff), stdin);
    printf("%s %s %s %s",
           engdata[i].jword1, engdata[i].jword2, engdata[i].jword3, engdata[i].jword4);
    fgets(buff, sizeof(buff), stdin);
    printf("%s %s\n%s %s\n%s %s\n%s %s\n\n",
           engdata[i].esente1, engdata[i].jsente1, engdata[i].esente2, engdata[i].jsente2,
           engdata[i].esente3, engdata[i].jsente3, engdata[i].esente4, engdata[i].jsente4);
  }
}
英単語と発音記号を表示、キー入力で日本語の意味を表示、続くキー入力で例文の表示をするものです。

画像

画像を見てもらえると分かりやすいと思うのですが
4つの日本語の意味(jword)を表示したあとfgets()によるキー入力を受けるつもりでしたが
最終行の3つめの単語の意味で表示が消えています。
画面のリサイズなどを行うと4つめの単語まで表示されます。

fgtes()で入力を待つ際に、端末上のカーソルが単語の意味の3番目の位置にあるのが原因だと思うのですが
拡張表記にも後退(\b)や復帰(\r)はっても前進がないので、どう対処すればいいいのか困っています。

アドバイスお願いします。

Re: 英単語の訳の表示が消える

Posted: 2017年2月04日(土) 10:06
by みけCAT
各printf()の呼び出しの直後にfflush(stdout);を追加し、バッファに入っている内容を出力させるようにするとどうなりますか?

Re: 英単語の訳の表示が消える

Posted: 2017年2月04日(土) 10:30
by Ohagi
特に変化はないようです。

Re: 英単語の訳の表示が消える

Posted: 2017年2月04日(土) 11:40
by みけCAT
kazuki2655 さんが書きました:fgtes()で入力を待つ際に、端末上のカーソルが単語の意味の3番目の位置にあるのが原因だと思うのですが
なぜそう思うのですか?
それは因果関係ではなく、単に相関関係ではないですか?
すなわち、カーソルは単に出力が止まった位置にあるというわけではないですか?
オフトピック
粘土ではなく、年度で動物を作っていたというのはどういう状況なんだろう…?

Re: 英単語の訳の表示が消える

Posted: 2017年2月04日(土) 11:46
by Ohagi
相関関係です。
意図した表示にならず、また意図したカーソル位置になかったのでそう思い書きました。