2011-02-10 157 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,看看他們是否也有圖書館裏有東西。或者你可以像這裏所建議的那樣「手動」。