私はNTLライブラリ(これはC++ライブラリ)でアルゴリズムを書いています。今は編集するN個のファイルがあり、それらを同時に作成/開く必要があります。私は動的にN個のファイルポインタのスペースを割り当てようとしますが、コードに何か問題があります。コードスニペットを以下に示します。C++のfstreamの配列
P1 = (char **)calloc(n+1, sizeof(char *));//P1 is used to save file names
for(i=1; i<=n; i++)
{
P1[i]=(char *)calloc(20, sizeof(char));
sprintf(P1[i],"P1_%d.txt",i);
}
ifstream *fin = (ifstream *)calloc(n+1, sizeof(ifstream));
for(i=1; i<=n; i++)
{
fin[i].open(P[i]);
}
プログラムは、Linuxで実行すると、セグメンテーションフォールトがある私に語りました。私は
ifstream fin[200]
代わりにプログラムが実行さ
ifstream *fin = (ifstream *)calloc(n+1, sizeof(ifstream));
の使用しようとすると、N以来
は、200より大きくありません。
私はC言語ではなくC++であることを知りました。実際にはfstream
クラスの仕組みはわかりません。同時にN個のファイルを開くよりよい方法があるかどうか教えてください。
'C'には' ifstream'、AFAIRはありません。 –
malloc/calloc関数はCでは使用されますがC++では使用されませんが、代わりにnewを使用する – ShellCode
CおよびC++の配列は1ではなく0から開始するため、ループは 'for(i = 0; i