fgets関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
テオリア

fgets関数について

#1

投稿記事 by テオリア » 18年前

http://www.dia-net.ne.jp/~xbox/question.html

上記のURLにプログラムのソースを載せました。

実行し、文字列の個数を入力すると、なぜか最初のループで、文字列の入力ができません。

2回目以降は、入力ができます。

どうしてなのでしょうか?

よろしくお願いいたします。

Hermit

Re:fgets関数について

#2

投稿記事 by Hermit » 18年前

scanf("%d", &n);
では、数値の後の改行までは取得されないため、
最初の入力時にその改行が入ってしまいます。

最初の改行を取り除く処理が必要です。

scanf("%d", &n);
fgets(str, 100, stdin);

くらいでいいんじゃないかな?もっとスマートなやり方あったかもしれないが(^^;

テオリア

Re:fgets関数について

#3

投稿記事 by テオリア » 18年前

そういうことだったんですか!

ありがとうございます。

tk-xleader

Re:fgets関数について

#4

投稿記事 by tk-xleader » 18年前

>くらいでいいんじゃないかな?もっとスマートなやり方あったかもしれないが(^^;

getchar()関数で空読みするという方法がいいと思います、getchar()の場合は、戻り値
に入力されたキー(正確には入力バッファに残っているもの)を返すだけですから、それ
を無視してしまえばいいと思います。

テオリア

Re:fgets関数について

#5

投稿記事 by テオリア » 18年前

tkmakwins15さん、回答ありがとうございます。

実際やってみたところ、私が求めていたものでした。

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

閉鎖

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