Я пытаюсь случайным образом заполнить массив 2d со значениями, а затем умножить их, но по какой-то нечетной причине, когда я запускаю свой код, на последней итерации я получаю ошибку сегментации. Я попытался уменьшить число, которое я передаю, и все, но ошибка по-прежнему сохраняется. Вот код, который я пытаюсь выполнить, любая помощь очень ценится, спасибо.Сегментация Неисправность последней итерации
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *matrixFile;
int n = atoi(argv[1]); // the number of matrices
int i, j; // must declare outside of for loop due to resolve C99 mode error
double arrA[n][n];// = CreateRandomMatrix(n);
double arrB[n][n];
double sumArr[n][n];
matrixFile = fopen("home/acolwell/Documents/CPE631_HW2_Number1/results.txt", "w+");
printf("Usage: %s <size of nxn matrices>\n", argv[1]);
// randomly populate arrA and arrB
for(i = 0; i < n; i++)
{
printf("%d\n", i);
for(j = 0; j < n; j++)
{
printf("%4d", j);
arrA[i][j] = (double)rand()/(double)RAND_MAX;
arrB[i][j] = (double)rand()/(double)RAND_MAX;
}
}
printf("Exiting Matrix randomization");
// multiply the matrices and write them to the file
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
sumArr[i][j] = arrA[i][j] * arrB[i][j];
printf("Writing matrix ");
fprintf(matrixFile, "%0.3lf\n", sumArr[i][j]);
}
}
if(matrixFile)
{
fclose(matrixFile);
}
matrixFile = NULL;
return 0;
}
Насколько я знаю, в C вы не можете использовать непостоянный значение при создании массива. – cdonts
@ cdonts Да, вы можете. Он называется 'VLA' [массив переменной длины] и поддерживается с c99, IIRC –
@CraigEstey Полезно знать! – cdonts