本系列文章目录
什么是 包裹(使用双引号)?
包裹的概念是面向字段的,包裹起来的字段将会被视为一个整体。尤其当字段中包含一些特殊符号(如逗号、换行符、双引号)时,如果不将这些字段包裹起来,则很有可能导致 CSV 文件解析发生错误。那么我们该如何包裹一个字段呢,通常将一个字段放置在双引号("")之间,例如"ID",ID就是一个被包裹的字段。任何字段都可以使用双引号("")将其包裹起来,并不存在任何限制。
字段中特殊符号的处理
根据上面的介绍,如果一个字段中包含特殊符号,那么在写入时必须使用双引号来包裹这个字段。有一点需要注意,C语言中字符串中的双引号需要通过使用转义符号来表示(\")
下面分别用逗号、换行符、双引号来做示例
-
逗号:
fprintf(fp, "3,\"z,xc\",3.3\n");
-
换行符:
fprintf(fp, "4,\"qw\nas\",4.4\n");
-
双引号:
fprintf(fp, "5,\"\"aszx\"\",5.5\n");
,第一个用作包裹字段,第二个双引号才是实际的双引号。
完整的程序如下:
// 2-1.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp = fopen("tmp.csv", "w+");
if (fp == NULL) {
fprintf(stderr, "fopen() failed.\n")