ファイルの入出力
初心者です。よろしくお願いします。
私は今、ErgoVista(EarthView)というソフトで画像を表示するために、datファイルを入力して、x00ファイルを出力するプログラムを作っています。datファイルをエディタで表示すると2行45万列の複素データが出てきます。
とりあえず何の処理もせず、ErgoVistaファイル入出力の例から、下のようなプログラムを作ったのですが、実行ができなく
「unknown software exception(0xc00000fd)がアプリケーションの0x00401997で発生しました」と出てきました。
初心者でして、なんで実行ができないのかまったくわかりません。誰か教えてください。
下のソースファイルで間違っているとこがありましたら、教えてもらえると幸いです。(エラーは出ませんでした)
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
void Make_Header(char*,int,int); //ヘッダファイル書き出し関数,このまま使用
#define T 451584
main()
{
/*変数宣言*/
int i;
long j;
double data1[2][T];
FILE *fp_i, *fp_o;
/*入力*/
printf("data in start\n");
fp_i = fopen("200113-HH-100a-IFFT.dat", "r"); for(j = 0; j < T; j++){
for(i = 0; i < 2; i++){
fread(&data1[i][j],sizeof(double),1,fp_i);
}
}
//fread(代入する変数ポインタ,データ型サイズ,データ数,fp_i);
fclose(fp_i); //開いたらちゃんと閉じる
/***************************************
処理部分
***************************************/
/*出力*/
printf("write in start\n");
fp_o = fopen("200113-HH-100a-IFFT1.x00", "wb"); //ファイルオープン,wbはオープン形式でバイナリファイル書き出し
fwrite(&data1[i][j],sizeof(double),1,fp_o); //出力部分,ループでまわしたり
fclose(fp_o); //開いたらちゃんと閉じる
Make_Header("200113-HH-100a-IFFT1.x00",2,T); //ErgoVistaのヘッダファイル情報を出力する関数,?pixel(横数)と?line(縦数)を出入?
return 0;
}
/* ヘッダ情報書きこみのサブルーチン このまま使用*/
void Make_Header(char FN[], int pixel, int line)
{
char hd[40]="", text[40];
FILE *fhd;
strncat(hd, FN, strlen(FN)-3);
strcat(hd, "hdr");
if((fhd = fopen(hd, "w")) == NULL){
printf("error : cannot open [%s] (header file)\n", FN);
exit(1);
}
fprintf(fhd, "FILE_TYPE = IMAGE \n");
fprintf(fhd, "IMAGE_LINES = %d \n",line);
fprintf(fhd, "LINE_SAMPLES = %d \nEND\n",pixel);
fclose(fhd);
}
お礼
メーリングリスを教えていただきありがとうございました.機会があったらのぞいてみようと思います. 質問の内容に関しましては書式が違うものの解決いたしました.参考までに書いておきます. e.g.)paramという変数を出力ファイル名に使用する場合. param=256; data=Table[1,{param}]; Export["C://param"<>ToString[param]<>".txt",data,"List"];