- テキストデータファイルを読み込む場合
- ファイル名:data96.dat とする以下のようなファイルの中にある後ろ3つのデータを読み込む場合.
-
1996 1 1 0.0000 0.5701
0.8815
1996 1 2 0.0000
0.6925 0.4674
1996 1 3 0.0000 0.7023 0.6405
1996 1 4 0.0000 0.7223
0.6748
1996 1 5 0.0000 0.7219
0.6502
1996 1 6 0.0000 0.7123 0.7108
1996 1 7 0.0000 0.7028
0.4755
1996 1 8 10.5000 0.8519 0.9824
1996 1 9 1.0000 0.7590 0.8842
1996 1 10 0.5000 0.7540 0.6873
・
・ |
|
- - fscanf関数で読み込む方法
サンプルコード |
#include<stdio.h> #include<stdlib.h>
#include <fstream.h>
#define N 8740 //データ数
void main() {
FILE *fp;
char fname[]="d:\\data\\data96.dat"; //絶対パス
int y,m,d; //ダミー変数
double d1,d2,d3; //ダミー変数
int year[N],month[N],day[N]
double data1[N],data2[N],data3[N];
int i=0;
if((fp = fopen(fname,"r")) == NULL)
{
printf("Error.Can't open input data file.");
exit(1);
}
while(fscanf(fp,"%i%i%i%f%f%f",&y,&m,&d,&d1,&d2,&d3)
!= EOF)
{
year[i]=y;
month[i]=m;
day[i]=d;
data1[i]=d1;
data2[i]=d2;
data3[i]=d3;
i=i+1; }
fclose(fp);
retrun 0; }
|
- - 一行丸ごと読み込んでatof()関数でdouble型に変換する方法
- atof()関数は,char型の数値ををdouble型に変換する.
|
サンプルコード
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char* argv[])
{
FILE* fpi;
char buf[128];
double d1,d2,d3;
char fname[]="d:\\data\\data96.dat";
fpi=fopen(fname,"r");
if(fpi == NULL){
printf("failed at fopen\n");
exit(1);
}
while(fgets(buf,128,fpi) != NULL){
d1=atof(&buf[15]);
d2=atof(&buf[23]);
d3=atof(&buf[36]);
}
fclose(fpi);
return 0;
}
|
|
Copyright(C)1998 Shinichi Takeshita.All Rights Reserved.
|
|
|
|
|
|