我正在做一个需要生成随机矩阵的代码,将其保存在.txt
中并对其执行某些操作。矩阵需要改变维度,我认为我宣布它的方式是允许我解除分配然后再分配它的方式(如果不是请让我知道)。
我的问题是随机数生成器不起作用,它会在文件中保存一个数字,如果我打印它会产生两个不同的输出。这可能是因为我没有很好地声明矩阵或相应地给它赋值。
我将留下它创建的三个不同输出的图片,只有一个是有意义的,因为我放置rand
的范围(1-9)。
我认为问题在于矩阵的使用。矩阵是我代码中的指针吗?我何时会使用*
或&
?
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
#include <string.h>
int main(){
FILE *f;
int nmatrix=3;
int nmax=nmatrix;
int number, cout, count, count2, i, j, k, p;
srand(time(NULL));
//int C[nmatrix][nmatrix];
//int (*B)[nmatrix][nmatrix] = malloc(nmatrix * nmatrix * sizeof(int));
float **a = malloc(nmatrix * sizeof(float *));
for (p = 0; p < nmatrix; p++) {
a[p]=malloc(nmatrix * sizeof(int));
}
while(nmatrix<=nmax){
// Creation of Matrix
f = fopen("matrix.txt", "w");
for(count = 0; count < nmatrix; count ++){
for(count2 = 0; count2 < nmatrix; count2 ++){
a[count][count2]= (rand()%8)+1;
fprintf(f, "%s%d ", " ", a[count][count2]);
printf(" A1:%d, A2:%d \n", a[count][count2], a[count][count2]);
}
fprintf(f, "%s\n", " ");
}
fclose(f);
nmatrix=nmatrix+1;
/*More code*/
}
return 0;
}