CSV FILE генератор в C - PullRequest
       7

CSV FILE генератор в C

0 голосов
/ 10 февраля 2011

Существует ли какая-либо программа на C, которую я могу запустить на Linux-компьютере, и она создаст CSV-файл с заданными размерами (строки x столбцы) и сохранит его на жестком диске?

Ответы [ 3 ]

3 голосов
/ 10 февраля 2011

CSV-файл - это простой текстовый файл с разделенными запятыми значениями, поэтому его можно создать вручную в текстовом редакторе. Есть спецификация в RFC 4180 .

Часто первая строка используется для имен столбцов, таких как:

Name, Account no, Amount
Niels, 1234, $0.99
Thomas, 8888, $10.00
Per, 3454, $9.00
Rasmus, 9412, $99.99

Небольшая программа на c для создания простого и пустого файла CSV может выглядеть следующим образом:

/*
 * makecsv.c 
 */

#include <stdio.h>

int main(int argc, char **argv) {
   if( argc != 3) {
      printf("Mandatory arguments: <rows> <cols>\n");
         return 1;
      }

      int row, col;
      for(row = 0; row < atoi(argv[1]); row++) {
         for(col = 0; col < atoi(argv[2]); col++) {
            if(col > 0) {
               printf(", ");
            }
            /* Default values are "row x col" */
            printf("\"%dx%d\"", row, col);
         }
         printf("\r\n");
       }
       return 0;
}

Я бы скомпилировал и запустил его с помощью следующих команд:

$ gcc -o makecvs makecsv.c 
$ ./makecvs 3 4
"0x0", "0x1", "0x2", "0x3"
"1x0", "1x1", "1x2", "1x3"
"2x0", "2x1", "2x2", "2x3"

$

Чтобы поместить вывод в файл «способом unix», передайте вывод в файл, используя следующие команды:

$ ./makecvs 3 4 > myFile.csv
1 голос
/ 10 февраля 2011

Если вы ищете существующую утилиту, вы, вероятно, не на том сайте, но что-то вроде этого будет печатать пустой CSV-файл с двойными кавычками и без строки заголовка:

for (int i = 0; i < rows; ++i) {
    for (int j = 0; j < cols-1; ++j) {
        printf("\"\",");
    }
    printf("\"\"\n");
}

Взять некоторые произвольные данные и превратить их в файл CSV сложнее.Во-первых, каков формат входных данных?Во-вторых, корректно экранируйте данные.

0 голосов
/ 28 августа 2013

Ну, я сделал поиск и придумал: http://sourceforge.net/projects/libcsv/

Так что это всего лишь один пример "библиотеки" для обработки csv. Возможно, стоит заглянуть в glib и apr и посмотреть, есть ли у них что-то в этих библиотеках. Или вы можете сделать это «вручную», как предложено здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...