赞
踩
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
CSV文件的格式不存在通用标准,也没有指定所使用的字符编码,但是在RFC 4180中有基础性的描述, 而7-bit ASCII是最基本的通用编码。
CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。
例如,一个用户可能需要交换信息,从一个以私有格式存储数据的数据库程序,到一个数据格式完全不同的电子表格。最可能的情况是,该数据库程序可以导出数据为“CSV”,然后被导出的CSV文件可以被电子表格程序导入。
“CSV”不是一种单一的、定义明确的格式(尽管RFC 4180有一个被广泛使用的定义),因此在实践中,术语“CSV”泛指具有下列特征的任何文件:
写csv的例程如下,该代码在c/c++下均可编译:
- #include <stdio.h>
- #include <stdlib.h>
-
- int main ()
- {
- FILE *fp;
- typedef struct tagStuInfo {
- int id;
- char name[16];
- float age;
- } StuInfo, *PStuInfo;
-
- StuInfo sis[] = { {1, "tom", 12}, {2, "jack", 12.2}, {3, "siu", 2} };
-
- fp = fopen ("demo.csv", "w");
- for (int i = 0; i < sizeof (sis) / sizeof (*sis); i++) {
- fprintf (fp, "%d,%s ,%f\n", // \bred{!!!注意 \%s 后有一个空格}
- sis[i].id, sis[i].name, sis[i].age);
- }
-
- fclose (fp);
-
- return 0;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
读csv的例程如下,为了方便将读到的数据进行保存,该代码使用了vector,仅限c++下编译:
- #include <stdio.h>
- #include <stdlib.h>
- #include <vector>
- int main ()
- {
- FILE *fp;
- typedef struct tagStuInfo {
- int id;
- char name[16];
- float age;
- } StuInfo, *PStuInfo;
-
- fp = fopen ("d:/demo.csv", "r");
- std::vector<StuInfo> vct;
- StuInfo si;
- int r;
- int ic = 0;
-
- while( fscanf (fp, "%d,%s ,%f\n", // \bred{!!!注意 \%s 后有一个空格}
- &(si.id),si.name, &(si.age)) != EOF ) {
- vct.push_back(si);
- }
- fclose (fp);
-
- //验证读到的数据是否正确
- for( auto s:vct ){
- printf("id:%d,name:%s,age:%f\n",s.id,s.name,s.age);
- }
-
- return 0;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。