美文网首页
libcsv库解析csv文件

libcsv库解析csv文件

作者: 一路向后 | 来源:发表于2020-11-07 21:43 被阅读0次

1.程序源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <csv.h>

struct counts {
        unsigned long fields;
        unsigned long rows;
        char buf[1024];
};

//列回调函数
void cb1(void *s, size_t len, void *data)
{
        ((struct counts *)data)->fields++;
        strcat(((struct counts *)data)->buf, s);
        strcat(((struct counts *)data)->buf, "; ");
}

//行回调函数
void cb2(int c, void *data)
{
        printf("%s\n", ((struct counts *)data)->buf);
        ((struct counts *)data)->rows++;
        memset(((struct counts *)data)->buf, 0x00, 1024);
}

int main()
{
        FILE *fp;
        struct csv_parser p;
        char buf[1024];
        size_t bytes_read;
        struct counts c = {0,0};

        memset(&c, 0x00, sizeof(c));

        //初始化解析器
        if(csv_init(&p, 0) != 0)
        {
                exit(EXIT_FAILURE);
        }

        //打开文件
        fp = fopen("1.csv", "rb");
        if(fp == NULL)
        {
                exit(EXIT_FAILURE);
        }

        while((bytes_read=fread(buf, 1, 1024, fp)) > 0)
        {
                //解析csv文件
                if(csv_parse(&p, buf, bytes_read, cb1, cb2, &c) != bytes_read)
                {
                        fprintf(stderr, "Error while parsing file: %s\n", csv_strerror(csv_error(&p)));
                        exit(EXIT_FAILURE);
                }
        }

        //结束解析
        csv_fini(&p, cb1, cb2, &c);

        fclose(fp);

        printf("%lu fields, %lu rows\n", c.fields, c.rows);

        //释放资源
        csv_free(&p);

        return 0;
}

2.编译源码

$ gcc -o example example.c -lcsv

3.运行结果

$ ./example
1; 2 ; 3      ; 4     ; 5     ; 
1     ; 2   ; 3   ; 4     ; 5     ; 
10 fields, 2 rows

相关文章

  • libcsv库解析csv文件

    1.程序源码 2.编译源码 3.运行结果

  • python 解析csv文件

    csv文件(Comma-Separated Values)的解析 python标准库中有csv 假如有这样一份cs...

  • Apache Commons CSV使用指南

    解析文件 解析Excel CSV文件 先通过文件路径获取到一个FileReader,然后读取CSV记录。默认自动带...

  • python 读写CSV数据

    6.1 使用csv模块来读写csv数据 我们有如下csv文件 一、读取CSV文件 可以使用csv模块来解析csv文...

  • Unity-csv(Excel)

    一、解析csv文件 float f = Date_csv.instance .GetDateByIDAndName...

  • Django处理Excel,CSV文件

    1 .处理Excel文件: 通过前台传入Excel文件进行解析 2. 处理CSV文件: 解析本地文件 解析前台传入...

  • csv文件操作

    一、需要的库 需要导入csv库import csv 二、读取文件并将文件赋值到列表 三、查看文件头 enumera...

  • Django-26 django生成csv文件

    Python提供了内建库 - csv;可直接通过该库操作csv文件案例如下: csv文件下载 在网站中,实现下载c...

  • 前端解析 CSV 文件

    项目中有一个需求是上传CSV文件,解析数据然后传给后台,打开.CSV 后缀的文件,其格式如下 解析过程如下(ang...

  • 在python中使用csv

    在python中使用csv 这篇文章讨论的如何使用python加载和解析csv文件 首先,什么是csv呢? CSV...

网友评论

      本文标题:libcsv库解析csv文件

      本文链接:https://www.haomeiwen.com/subject/hkgqbktx.html