• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のcanf()関数を2回(以上)連続で使用に)

C言語のscanf関数を連続使用する際の入力エラーの解決方法

このQ&Aのポイント
  • C言語のscanf関数を連続使用する際に入力エラーが発生する場合、以下のように修正することで解決することができます。
  • まず、scanfの直後にgetchar関数を使用して改行文字を取得することで、入力バッファをクリアします。
  • そして、次にscanfを使用して入力を受け取る前にfflush(stdin)関数を使用して入力バッファをクリアすることで、連続的な入力が可能になります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

その前の scanf("%s\n", &e); の 中の\nが邪魔してますね。この\nを消すと よいと思いますよ。 あと、eはchar型の配列なので、eだけでポインタになります。 よって、scanfに渡すときは、 &eじゃなくて、eです。

asai555666
質問者

お礼

ありがとうございました。

その他の回答 (1)

回答No.1

printf("ASC or DESC: "); scanf("%s", ad); if (strcmp(ad, "ASC") == 0) { qsort(sin, cnt, sizeof(sin[0]), cmp_u); } else { qsort(sin, cnt, sizeof(sin[0]), cmp_d); } であれば、ここにバリデーターを入れてしまうのはどうでしょ? printf("ASC or DESC: "); while(1) { scanf("%s", ad); mode=0; if (strcmp(ad, "ASC") == 0) { mode=1; break; } if (strcmp(ad, "DESC") == 0) { mode=2; break; } } こんな感じで、絶対にASCかDESCを入力しない限り、 ループから出れなくすることで、前の入力の残骸があっても、 止まります。 後は、fflush(stdin)でコンソールバッファーをクリアしてしまうなど。

関連するQ&A