vector型配列に格納された15万件のデータ(double型)を,txt形式で出力したいと思っています.
以下のソースで実行しているのですが,途中で例外処理されてしまいます.
問題点・解決法のご教授をお願いいたします.
// 以下,出力部ソース
for(i=0;i<sz;i++)
{
char c_dataBuf[DEF_DATA_LEN]={0};
s=SIM_I[i];
sprintf(c_dataBuf, "%lf,", s);
strcat(c_dataEq31, c_dataBuf);
strcat(c_dataEq31, "\n");
}
書き込み途中で投稿してしまいました.追記です.
// 以下ソース
sz=SIM_I.size();
if ((file = fopen(outputFileName, "w")) == NULL)
{
printf("main: fopen() error1. path=[%s]\n", outputFileName);
return -1;
}
for(i=0;i<sz;i++)
{
char c_dataBuf[DEF_DATA_LEN]={0};
s=SIM_I[i];
sprintf(c_dataBuf, "%lf,", s);
strcat(c_dataEq31, c_dataBuf);
strcat(c_dataEq31, "\n"); // データ間に改行が必要
}
fputs(c_dataEq31, file);
if (fclose(file) != 0)
{
printf("main: fclose() error2. path=[%s]", outputFileName);
}
// ソースここまで
sz = vector型配列SIM_Iの要素数
SIM_I = 15万件のデータを格納したvector型配列
度々申し訳ありません。
表題の「1万5千件」は「15万件」の間違いです。
ソースが不十分なので原因はつきとめられません。
データ数を減らせばちゃんと動くか、確認していますか?
以下の型って何?
s=SIM_I[i];
デバッガで何処でどんな例外か調べられないのでしょうか。
DEF_DATA_LENが小さいとか。
printfに%lfなんてあった?
15万件のデータがc_dataEq31に全部入るのか?
今のPCならそれくらいのメモリは余裕で使えるけど
提示されたプログラムではそれがわからないので。
動作確認していないのでミスがあるかもしれないが
こうじゃないのか
FILE * file;
int sz = (int)SIM_I.size();
if ((file = fopen(outputFileName, "w")) == NULL)
{
printf("main: fopen() error1. path=[%s]\n", outputFileName);
return -1;
}
for(i=0;i<sz;i++)
{
double s = SIM_I[i];
fprintf(file,"%f\n",s);
}
if (fclose(file) != 0)
{
printf("main: fclose() error2. path=[%s]", outputFileName);
}
επιστημη様、超初心者様、ありがとうございました。
データ数を少ないものから徐々に増やし、テストを行いました。
その後、一定数で出力エラーが起こっていることがわかりました。
超初心者様のソースを元に出力部を書き直し、無事希望通りの結果が得られました。
どうもありがとうございました。
ツイート | ![]() |