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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ohagi
記事: 31
登録日時: 3年前

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

#1

投稿記事 by Ohagi » 2年前

端末で英単語帳を作成しています。

コード:

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)はっても前進がないので、どう対処すればいいいのか困っています。

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

アバター
みけCAT
記事: 6246
登録日時: 9年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 2年前

各printf()の呼び出しの直後にfflush(stdout);を追加し、バッファに入っている内容を出力させるようにするとどうなりますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Ohagi
記事: 31
登録日時: 3年前

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

#3

投稿記事 by Ohagi » 2年前

特に変化はないようです。

アバター
みけCAT
記事: 6246
登録日時: 9年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 2年前

kazuki2655 さんが書きました:fgtes()で入力を待つ際に、端末上のカーソルが単語の意味の3番目の位置にあるのが原因だと思うのですが
なぜそう思うのですか?
それは因果関係ではなく、単に相関関係ではないですか?
すなわち、カーソルは単に出力が止まった位置にあるというわけではないですか?
オフトピック
粘土ではなく、年度で動物を作っていたというのはどういう状況なんだろう…?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Ohagi
記事: 31
登録日時: 3年前

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

#5

投稿記事 by Ohagi » 2年前

相関関係です。
意図した表示にならず、また意図したカーソル位置になかったのでそう思い書きました。

閉鎖

“C言語何でも質問掲示板” へ戻る