我想隨機填充一個二維數組然後乘以它們,但由於某些奇怪的原因,當我運行我的代碼時,在最後一次迭代中,我出現了分段錯誤。我嘗試減少我傳遞的數量和一切,但錯誤仍然存在。這裏是我試圖執行的代碼,非常感謝任何幫助,謝謝。最後迭代分割錯誤
#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
@cirstts是的,你可以。它被稱爲'VLA' [可變長度數組],自c99,IIRC –
@CraigEstey以來一直受到支持好奇! – cdonts