【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22408

解答例15-4-1( != EOF の意味)
投稿者---あきき(2005/08/04 00:32:06)


scanf関数で入力したデータを構造体変数に格納する条件として次のように記されています。( != EOF )

省略
int main( void )
{
struct list sintai[NINZUU+1];
int i=0;

printf( "氏名、体重、身長を入力しなさい。(終了条件:Ctrl+Z)\n" );
while( ( scanf( "%s %lf %lf", sintai[i].name, &sintai[i].taijyu,
&sintai[i].sincyou )!=EOF ) && i<NINZUU ) {
i++;
}
省略

しかし、ここでなんですが、!= EOFとは、−1ではない。つまり、1か0を指しているのではないでしょうか。なのに正常終了するので納得いきません。どなたかアドバイスをお願いします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:解答例15-4-1( != EOF の意味) 22409 通りすがり 2005/08/04 01:19:21


No.22409

Re:解答例15-4-1( != EOF の意味)
投稿者---通りすがり(2005/08/04 01:19:21)


>しかし、ここでなんですが、!= EOFとは、−1ではない。つまり、1か0を指しているのではないでしょうか。なのに正常終了するので納得いきません。どなたかアドバイスをお願いします。

scanf関数の仕様を確認してみてください。
scanf関数の戻り値は、読み込みに成功した変数の数を返します。(この場合、正常に入力したなら3が返ります)
そして、エラーが発生(この場合はCtrl+Z)した時に、EOFを返すようになっています。

というわけで、Ctrl+Zを入力するまでwhileループが繰り返されるという事です。


この投稿にコメントする

削除パスワード

No.22422

Re:解答例15-4-1( != EOF の意味)
投稿者---あきき(2005/08/04 14:09:27)


お忙しい中回答して頂き有難うございます。おかげさまで、当サイトの例題15−4−1が一気に解決しました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧