csvburst.c
来自「稀疏矩阵、链表、图、队列、二叉树、多叉树、排序、遗传算法等的实现」· C语言 代码 · 共 63 行
C
63 行
/**************************************/
/* */
/* Code from the book C Unleashed */
/* Macmillan, 2000 */
/* Chapter 6: Data Files */
/* Steve Summit 2000-03-17 */
/* */
/**************************************/
#define TRUE 1
#define FALSE 0
#include <stddef.h>
int
csvburst(char *line, char *arr[], int narr)
{
char *p;
int na = 0;
char prevc = ','; /* force recognizing first field */
char *dp = NULL;
int inquote = FALSE;
for(p = line; *p != '\0'; prevc = *p, p++)
{
if(prevc == ',' && !inquote)
{
/* start new field */
if(dp != NULL)
*dp = '\0'; /*terminate prev*/
if(na >= narr)
return na;
arr[na++] = p;
dp = p;
if(*p == '"')
{
inquote = TRUE;
continue; /* skip quote */
}
}
if(inquote && *p == '"')
{
/* doubled quote goes to one quote; */
/* otherwise quote ends quote mode */
if(*(p+1) != '"')
inquote = FALSE;
p++; /* skip first quote */
}
if(*p != ',' || inquote)
*dp++ = *p;
}
if(dp != NULL)
*dp = '\0';
if(na < narr)
arr[na] = NULL;
return na;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?