ファイルの入出力について
Posted: 2018年1月25日(木) 20:18
ファイルの入出力について
二つのファイルを比較し計算するというプログラムを作ってるうえで、確認のためファイルの内容がそのまま書き出せているかどうかfprintf()で確かめていたところで起きた問題です。
二つのファイルを上から順に読み込み、一つのファイルに書き込むというプログラムを作成しました。
しかし、読み込んだファイル(kadai.txtとkadai2.txt)の数値と書き込んだファイル(result.txt)の内容が一致しません。
また、Ctrl+fでファイル内の検索を行っても一致した値がありません。
なぜ違う値が出力されるのでしょうか?
以下に実際の値の例を載せます。
[result.txt] [kadai.txt] [kadai2.txt]
4.99998998641968 4.99998998641968 4.99999009915671 4.99998990015611
4.99996089935303 4.99995994567871 4.99996078952758 4.99995999352302
4.99991226196289 4.99991035461426 4.99991206760234 4.99991027658406
二つのファイルを比較し計算するというプログラムを作ってるうえで、確認のためファイルの内容がそのまま書き出せているかどうかfprintf()で確かめていたところで起きた問題です。
二つのファイルを上から順に読み込み、一つのファイルに書き込むというプログラムを作成しました。
しかし、読み込んだファイル(kadai.txtとkadai2.txt)の数値と書き込んだファイル(result.txt)の内容が一致しません。
また、Ctrl+fでファイル内の検索を行っても一致した値がありません。
なぜ違う値が出力されるのでしょうか?
以下に実際の値の例を載せます。
[result.txt] [kadai.txt] [kadai2.txt]
4.99998998641968 4.99998998641968 4.99999009915671 4.99998990015611
4.99996089935303 4.99995994567871 4.99996078952758 4.99995999352302
4.99991226196289 4.99991035461426 4.99991206760234 4.99991027658406
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
FILE *f; // FILE型構造体
FILE *h;
FILE *result;
int i = 1,n = 0;
float x,y,data,data2;
f = fopen("kadai.txt", "r"); // ファイルを開く。
h = fopen("kadai2.txt", "r");
result = fopen("result.txt","w");
while(fscanf(f,"%f",&data) != EOF
&& fscanf(h,"%f",&data2) != EOF
){
fprintf(result,"%0.14f %0.14f\n",data,data2);
}
fclose(f); // ファイルを閉じる
fclose(h);
fclose(result);
return 0;
}