プロが教えるわが家の防犯対策術!

borlandC++を試してますが、ifstream等を利用してファイル入出力を試してますが、プロンプトを用いて、入力データが多すぎるとコンパイルは通りますが実行exeが拒否反応を起こし処理が止まってしまいます。
データが7万行以上ぐらいに達すると拒否反応を起こします。
自分がやろうとしてるのはそれを遥かに凌ぐ何百万行のデータの入出力処理を行いたいのですがこれでは不可能です。
どうして膨大データの入出力ができないのでしょうか?

自分の試したファイル入出力のプログラムソースと問題の読み込んだデータの内容も下に貼り付けます。
またソース中の処理で上記とは別のエラーを起こしたものがあり、入力データを一行毎に格納する配列 dag[b]  をprintfで表示させようと以下の様に記述しましたが
printf("[%d] %s\n", b,dag[b]);
もデータが7行以上になるだけでエラーを起こして止まります。

どうか膨大データの入出力とprintfのエラーの解決方法について教えて下さい。
宜しくお願いします。

#include <iostream.h>
#include <fstream>

main()
{

string dag[100000];
string LineData;
int b=0;

ifstream in("rrs.txt", ios::in);
if(!in){
printf("エラー\n");
exit(1);
}

while(!in.eof()){
printf("データ\n");
in >> dag[b];
printf("[%d] %s\n", b,dag[b]);
b++;
}

in.close();

ofstream out;
out.open ("WRT.txt");
for(int i=0;i < b;i++)out << dag[i] << endl;
out.close();

return 0;
}

#読み込んだデータ内容
2011/12/09,16:00:00,77.48,77.50,77.48,77.50
2011/12/11,17:00:00,77.66,77.66,77.54,77.61
2011/12/11,18:00:00,77.61,77.61,77.58,77.59
2011/12/11,19:00:00,77.59,77.64,77.59,77.63
2011/12/11,20:00:00,77.63,77.65,77.61,77.63
2011/12/11,21:00:00,77.63,77.63,77.58,77.60
2011/12/11,22:00:00,77.60,77.62,77.60,77.60
2011/12/11,23:00:00,77.61,77.64,77.60,77.64
2011/12/12,00:00:00,77.64,77.64,77.61,77.63
2011/12/12,01:00:00,77.64,77.64,77.56,77.58
2011/12/12,02:00:00,77.58,77.63,77.57,77.59
2011/12/12,03:00:00,77.59,77.69,77.58,77.66
2011/12/12,04:00:00,77.67,77.84,77.67,77.83
2011/12/12,05:00:00,77.82,77.90,77.74,77.80
2011/12/12,06:00:00,77.80,77.84,77.75,77.81
2011/12/12,07:00:00,77.81,77.82,77.75,77.78
2011/12/12,08:00:00,77.78,77.97,77.76,77.97
2011/12/12,09:00:00,77.97,77.97,77.83,77.91
2011/12/12,10:00:00,77.90,77.93,77.76,77.80
2011/12/12,11:00:00,77.79,77.86,77.72,77.86
2011/12/12,12:00:00,77.86,77.88,77.83,77.84
2011/12/12,13:00:00,77.84,77.89,77.83,77.89

A 回答 (3件)

× printf("[%d] %s\n", b,dag[b]);


○ printf("[%d] %s\n", b,dag[b].c_str());
    • good
    • 0
この回答へのお礼

printf("[%d] %s\n", b,dag[b].c_str());
に修正すると処理停止、文字化けがなくなりました。

ありがとうございます。

お礼日時:2013/02/05 11:35

bがint型だけど大丈夫?

この回答への補足

b変数はカウントするだけなので..

補足日時:2013/02/05 11:38
    • good
    • 0

ローカル変数でstring dag[100000];ってのがまず無茶。

スタックメモリが絶対足らない。

この回答への補足

ご回答ありがとうございます。

>ローカル変数でstring dag[100000];ってのがまず無茶。スタックメモリが絶対足らない。
おそらく配列数に限界があると感じました。
というより配列にデータを集める事にしか頭が言ってませんでした。
配列以外の方法を使えば何百万行のデータを読み込み別ファイルに出力に成功しました。

補足日時:2013/02/05 11:38
    • good
    • 0

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