#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