получение выходного 2D-массива в виде матрицы - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно распечатать / создать (в формате .CSV) массив размером 1940 (R) на 512 (C). У меня есть большая программа, в которой эта матрица создается с использованием других матриц. При исполнении все данные отображаются в одной строке. Мне нужны эти данные в формате .csv или excel, чтобы их использовать.

Кто-нибудь может мне помочь, что здесь делать?

Команда

printf("\n") работает для печати на экране в матричной форме, но в выходном файле все в одной строке.

for ( i = 0; i < 1940; i++ ) {
    for ( j = 0; j < 512; j++ ) {
        fprintf(pFile,",%d\t ",X7[i][j]);
        //printf("%d\t ", X8[i][j]);     
    }
    printf("\n");
}

Ответы [ 3 ]

3 голосов
/ 01 июля 2019

Вам нужно записать «новую строку» в файл, а не в консоль. Вместо

printf("\n");

запись

fprintf(pFile, "\n");
1 голос
/ 01 июля 2019

Не используйте символы \t (табуляция), которые приведут к разделителю табуляции и запятой между каждым значением (которое, как я вижу, дает подгонки libreoffice или excel (является ли это .csv или символом табуляции)file?)

Традиционно вы должны вывести свои значения с разделителями-запятыми с условным условием, чтобы не ставить запятую в начале каждой строки. Все, что вам нужно, это что-то вроде следующего:

for (int i = 0; i < 1940; i++) {                /* loop over rows */
    for (int j = 0; j < 512; j++) {             /* loop over columns */
        if (j > 0)                              /* if not 1st in row */
            fprintf (pFile, ",%d", ,X7[i][j]);  /* add "," before val */
        else
            fprintf (pFile, "%d", ,X7[i][j]);   /* no comma */
    }
    fputc ('\n', pFile);     /* add newline at end of each row */
}
1 голос
/ 01 июля 2019

В вашем примере вы используете:

fprintf(pFile,",%d\t ",X7[i][j]);

Вы должны использовать

fprintf(pFile,"%d,",X7[i][j]);

Используйте запятую ПОСЛЕ данных вместо пробела TAB +, поскольку это файл с разделителями-запятыми. При таком подходе у вас будет пустой столбец в конце, но это не должно быть большой проблемой.


Вместо

printf("\n");

использование

fprintf(pFile,"\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...