Мне нужно создать случайную матрицу типа double (Словарь) и сохранить ее в файл, чтобы я мог прочитать их позже в другой программе.вот как я генерирую данные: (ОК, я сделал одно окончательное редактирование, и теперь каждый элемент сохраняется в файл после того, как он был сгенерирован в цикле. Но есть ошибка из-за того, что fopen небезопасен!)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
/* Number of columns and rows in dictionary */
#define M (2000)
#define N ((int)(M/2))
/* Sign function */
double sign(double x) { return (x >= 0) - (x<0); }
/* Matrix indexing convention */
#define id(m, n, ld) (((n) * (ld) + (m)))
FILE *out_file = fopen("name_of_file", "w"); // write only
int main()
{
double *D;
double norm = sqrt(N), a;
int MN = M*N, m, n;
/* Initialize srand */
srand(time(NULL));
/* Initialize dictionary */
D = (double*)malloc(MN * sizeof(D[0]));
if (D == 0)
{
fprintf(stderr, "!host memory allocation error(dictionary)\n");
return EXIT_FAILURE;
}
for (n = 0; n < N; n++)
{
for (m = 0; m < M; m++)
{
a = sign(2.0*rand() / (double)RAND_MAX - 1.0) / norm;
D[id(m, n, M)] = a;
fprintf(out_file, "%lf ", D[id(m, n, M)]);
}
}
}
Как я могу сохранить D
в файле, чтобы потом загрузить его в другую программу для оптимизации?Я использую Visual Studio 2017.