ファイルを取り込んでそこから値を読み取るこの C コードを書いていますが、コードはまだ何も実行していませんが、これがこれまでのところです。プログラムは、4 つの malloc を呼び出しているブロックでクラッシュしています。y、f、および yp をコメントアウトすると、プログラムは正常に動作します。何が原因なのかわからない。そのため、どんな助けでも大歓迎です。
注: gcc を使用して ubuntu でこれをテストしています。そして、malloc を "(float *)" にキャストしようとしましたが、それでも同じエラーが発生します。
int main( int argc, char *argv[])
{
FILE *rhs, *output;
int niter, n, i = 0, j = 0, k = 0, n1 = n + 1;
rhs = fopen(argv[1], "r");
// ab+ opens file for writting and creates the file if need be
output = fopen(argv[2], "ab+");
niter = atoi(argv[3]);
// check if files open up or not, if not exit.
if((rhs == NULL) || (output == NULL))
{
printf("Error Opening files.\n");
exit(1);
}
// read in N
fscanf(rhs, "%d", &n);
// THIS IS THE BLOCK CAUSING THE CRASH
// CODE WORKS WHEN I COMMENT OUT LINES AND ONLY LEAVE ONE OF THEM IN
// generate array to hold values from rhs file
float *numbers = malloc(sizeof(float) * ((n1)*(n1)));
float *y = malloc(sizeof(float) * ((n1)*(n1)));
float *f = malloc(sizeof(float) * ((n1)*(n1)));
float *yp = malloc(sizeof(float) * ((n1)*(n1)));
// get numbers and store into array
while(fscanf(rhs, "%f", &numbers[i]) != EOF)
{
printf("In while %f\n", numbers[i]);
i++;
}
fclose(rhs);
return 0;
}