アプリ版:「スタンプのみでお礼する」機能のリリースについて

#include <stdio.h>
#define N 100
int main(void)
{
double xn[N], yn[N], x, y;
int i, cnt;
FILE *fp;
if((fp=fopen("data.txt", "r"))==NULL) return 0;
for(i=0; fscanf(fp, "%lf%lf", xn + i, yn + i)==2; i++);
cnt = i;
scanf("%lf", &x);
if(x < xn[0] || xn[cnt-1] <= x) return 0;
for(i=0; xn[i] < x; i++);
y = (yn[i+1] - yn[i]) * (x - xn[i]) / (xn[i+1] - xn[i]) + yn[i];
printf("y = %f\n", y);
return 0;
}
この文の
FILE *fp;
if((fp=fopen("data.txt", "r"))==NULL) return 0;
for(i=0; fscanf(fp, "%lf%lf", xn + i, yn + i)==2; i++);
cnt = i;
ここの部分でデータテキストを読み込んでるのはわかるんですが
fscanf(fp, "%lf%lf", xn + i, yn + i)部分で何をやってるかわかりません。誰か教えてください

A 回答 (1件)

おはようございます。


さて、
>fscanf(fp, "%lf%lf", xn + i, yn + i)

この部分は、次のように書換えることが可能です:
------------------------------------
fscanf(fp, "%lf%lf", xn[i], yn[i])
------------------------------------
つまり、おおもとのデータ data.txt を
1行ずつ読み込んでは、そこにあるデータを
配列 xn, yn に代入してゆく、という動作を
しているのですね。
そして、この動作は

fscanf(fp, "%lf%lf", xn + i, yn + i) の値が 2 である

限り、続けられてゆく、ということですね。
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます!
おかげで理解することができました

お礼日時:2008/06/19 11:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!