ページ 11

fgets関数について

Posted: 2007年7月12日(木) 21:47
by テオリア
http://www.dia-net.ne.jp/~xbox/question.html

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

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

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

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

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

Re:fgets関数について

Posted: 2007年7月12日(木) 22:16
by Hermit
scanf("%d", &n);
では、数値の後の改行までは取得されないため、
最初の入力時にその改行が入ってしまいます。

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

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

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

Re:fgets関数について

Posted: 2007年7月12日(木) 22:35
by テオリア
そういうことだったんですか!

ありがとうございます。

Re:fgets関数について

Posted: 2007年7月12日(木) 23:38
by tk-xleader
>くらいでいいんじゃないかな?もっとスマートなやり方あったかもしれないが(^^;

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

Re:fgets関数について

Posted: 2007年7月13日(金) 16:18
by テオリア
tkmakwins15さん、回答ありがとうございます。

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

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