• C语言对文件的读写操作以及处理CSV文件的方法


           #include <stdio.h>
           #define F_PATH "d:myfilefile.txt"
    
            int main(void)
            {
                FILE *fp = NULL; //需要注意
                fp = fopen(F_PATH, "a");
                if(NULL == fp)
                {
                    return -1; //返回错误代码
                }
    CString a = "a";
    CString b = "b";
    CString c = "c";

                  fprintf(fp, "%s,%s,%s ", a, b, c);  //写入a,b,c到文件中

                fclose(fp);
                fp = NULL; //需要指向空,否则会指向原打开文件地址
                return 0;
            }

    上面是用C语言写内容到文件中去,下面是从文件中读取:

    #include <stdio.h>
    
        int main(void)
        {
            FILE *fp = NULL;
            char line[1000];
            if((fp = fopen("test.csv","at+")) != NULL)
            {
                char delims[] = ",";
                char *result = NULL;
    
                CString a,b;
                while (fgets(line, MAX_LINE, fp))
                {
                    result = strtok( line, delims );
                    a = result;
                    result = strtok( NULL, delims );
                    b = result;
                }
                fclose(fp);
                fp = NULL;
            }
        }

    下面记录下C语言处理CSV文件的方法:

    什么是CSV文件

    CSV是 Comma-separated values (逗号分隔值)的首字母缩写,它通常是以逗号且不仅限于逗号分隔各个值,我们都叫他CSV。看下面的例子:

    China, Shanghai, Pudong, Zhang San, 200000, 1234567

    BMW; GER; 300000; RMB; i530

    从上面两个例子可以看出,可以用不同的分隔符来分隔数据;数据的类型可以不同;长度任意。

    由多行这样的CSV组成的文件叫做CSV文件(逗号分隔值文件)。当然,他们必须用同样的分隔符,对应每一列的数据要有相同的含义,不然这个文件就是无意义的。CSV文件可以直接用Microsoft Office中的Excel打开,这里不讨论Windows下的操作。

    C语言编程处理CSV文件

    通常CSV文件中包含大量有用信息,而且有时数据量庞大,一个数据文件会达到1G的大小,一般都是日志等重要信息。对CSV文件的处理也有很多方法,常见的就是用Bash, Python, Perl 等脚本语言来处理。这里提供一种用C语言处理CSV文件的方法。以下过程都是在Linux环境下进行的,Windows用户请注意移植。
    C语言标准库中有一个字符串(string.h)函数 strtok ,它的原型是

    char *strtok( char *s, const char *ct );

    它以 ct 中的字符为分界符,将字符串 s 分成许多记号。第一次调用时,它搜索 s ,找到不包含ct的第一个记号,将 s 中的下一个字符替换为 ‘/0’ ,并返回指向记号的指针。随后调用 strtok 函数时(由 s 的值是否为NULL指示),返回下一个不包含 ct 中字符的记号。当 s 中没有这样的记号时,返回NULL 。每次调用时的 ct 可以不同。

    注意红色标记的部分,这个函数的使用方法是(假设以逗号为分隔符):

    char str[] = “Life is like, a box of chocolate, you never, know what you’re, gonna get”;
    char delims[] = “,”;
    char *result = NULL;
    result = strtok( str, delims );
    while( result != NULL ) {
    printf( “%s /n”, result );
    result = strtok( NULL, delims );
    }

    OUTPUT:
    life is like
    a box of chocolate
    you never
    know what you’re
    gonna get

     

    部分资料来源:http://blog.sina.com.cn/s/blog_4936c31d010104w7.html

  • 相关阅读:
    【Mybatis】 JdbcType 与 JavaType对应关系
    【入门知识】虚拟机化概念
    【Ubuntu 16】安装deb
    【Ubuntu 16】安装eclipse
    【刷题】HDU 4405 Aeroplane chess
    【刷题】BZOJ 3998 [TJOI2015]弦论
    【刷题】SPOJ 1812 LCS2
    【刷题】BZOJ 2882 工艺
    【刷题】UOJ #171 【WC2016】挑战NPC
    【刷题】UOJ #79 一般图最大匹配
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3379669.html
Copyright © 2020-2023  润新知