2011-02-10 106 views
0

是否有任何C程序可以在Linux机器上运行,并且会创建一个给定维度(行x列)的csv文件并将其存储在硬盘上?CSV文件生成器C

+0

什么是您的输入数据? – stacker 2011-02-10 09:37:15

回答

1

如果你正在寻找一个现有的工具你可能是在错误的网站,但像这样的打印用双引号细胞一个空的CSV文件,并没有标题行:

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

服用一些任意数据并将其转换为CSV文件比较困难。首先,输入数据格式是什么?其次,正确地转义数据。

3

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 way”中,请将输出管道吨至文件中使用以下命令:

 
$ ./makecvs 3 4 > myFile.csv 
0

嗯,我做了搜索,并想出了: http://sourceforge.net/projects/libcsv/

所以这只是一个一个“库”为CSV处理的例子。这可能是值得一看glib和可能apr,看看他们是否也有图书馆里有东西。或者你可以像这里所建议的那样“手动”。