その2つの値の組について処理を行う。
ファイルには2つの値の組が何組か書かれている。
読み込んだ2つの値が共に負であったときにプログラムを終了する。
という流れのプログラムを書くとき、
読み込む方法(ループの使い方)と、2つの値が負であるかを判定する方法
の効率のよい書き方が自分では判断できません。
例えば、テキストファイルに次のように書かれているとします。
==================================================
10,10
20,-20
-30,-30
40,40
==================================================
プログラム内でファイルから値を読み込み、処理をするプログラムをこのように書いています。
#include <stdio.h> int main(void){ FILE *fp; int x, y; fp = fopen("text.txt", "r"); while( fscanf(fp, "%d,%d", &x, &y) != EOF ){ if(x<0 && y<0) break; /* 処理 */ } fclose(fp); return 0; }質問のために簡素化させていますが、
「xとyが共に負」という条件以外の問題(値が読み取れないなど)があった場合にループを外れるには、
while文の制御式のところを「!= EOF」ではなく「== 2」と書いた方がよいのでしょうか?
「xとyが共に負」を判断するためには、if(x<0 && y<0)よりも、
if(x<0) if(y<0) と書いた方がよいのでしょうか?
(xが負じゃなかったらyについては判断しないような書き方)
xとyが対象的でなくなるので少し気になるのですが、普通はこのように判断回数を少なくするように書くのでしょうか。
また、fscanfの時点で読み込んだ値を評価することはできるのでしょうか?
while( (fp から "%d,%d" を読み込んで、その両方が負ではなければループに入る) )
というような書き方はできるのでしょうか?
拙い文章ですみません。