从C中的.csv文件中读取特定行

时间:2017-05-27 14:17:07

标签: c csv parsing

我有一个CSV文件(.csv扩展名),如下所示:

"id_product","name","brand","category","price"
0157,Sparachiodi,Mannesmann,FaiDaTe,32.99
0211,Cavi di rame,Chapuis,FaiDaTe,20.23
4815,Tenaglia,Ks Tools,FaiDaTe,7.50
8451,Lucchetto,Blinky,FaiDaTe,4.55

我的问题是:如何编写一些仅从第二行读取文件的C代码?我想要做的是文件中的一种研究。 (例如,我想搜索名为" cavi"的产品,我将展示整行。)

1 个答案:

答案 0 :(得分:1)

你有一个csv文件。您知道合法行很短(<1000个字符)

所以

 char buff[1024];
 fgets(buff, 1024, fp); /* read line 1 */
 fgets(buff, 1024, fp); /* read line 2, overwriting line 1 */

但可能你想要的是这个

 char buff[1024];
 fgets(buff, 1024, fp);
 /* check buff is a legitimate csv header here */

 /* after we've got rid of the reader, do data lines until they run out */
 while(gets(buff, 1024, fp))
 {
    char *field = strtok(buff, ',');
    if(field)
    {
        /* numerical field, product id */
    }
    field = strtok(0, ',');
    if(field)
    {
         /* product name field */
    } 
 }