私は Mac OSX で作業しており、ターミナルで bash を使用しています。マシンには 8GB の RAM が搭載されています。このコードでセグメント違反 11 が発生する理由がわかりません。私の3週間の経験から、私は通常、要求されたメモリが多すぎるという形でそれらを取得します. しかし、私が求めているのは 5,200 個のエントリー配列だけです。これは、テキスト ファイルを開いて読み取ることと関係がありますか?
プログラムをそのまま実行するにはどうすればよいでしょうか? malloc はこれに関連していますか? ご協力いただきありがとうございます。
#include <stdio.h>
#include <math.h>
int main(){
double Mj[200]={0};
double Ma[200]={0};
double Cj[200]={0};
double Ca[200]={0};
double index[200]={0};
FILE *Matlab;
Matlab = fopen("TestbedComp.txt","r");
FILE *Cprog;
Cprog = fopen("results.txt","r");
int j = 0;
while( fscanf(Matlab,"%lf, %lf, %lf", &index[j], &Mj[j], &Ma[j]) == 3 ){
printf("%lf, %lf, %lf\n", index[j], Mj[j], Ma[j]);
j++;
}
fclose(Matlab);
printf("\n");
j = 0;
while( fscanf(Cprog,"%lf, %lf, %lf", &index[j], &Cj[j], &Ca[j]) == 3 ){
printf("%lf, %lf, %lf\n", index[j], Cj[j], Ca[j]);
j++;
}
fclose(Cprog);
double pej[200]={0};
for (j=0; j<200; j++) {
pej[j] = fabs(Mj[j]-Cj[j])/Mj[j];
}
double pea[200]={0};
for (j=0; j<200; j++) {
pea[j] = fabs(Ma[j]-Ca[j])/Ma[j];
}
FILE *out;
out = fopen("PercentError.txt","w");
for (j=0; j<200; j++) {
fprintf(out,"%.15lf, %.15lf, %.15lf \n", index[j], pej[j], pea[j]);
}
fclose(out);
return 0;
}