c - 如何在支持空字段的同时使用 sscanf 解析逗号分隔字符串中的字段?

标签 c string csv parsing scanf

我有一个逗号分隔的字符串,其中可能包含空字段。例如:

1,2,,4

使用基本

sscanf(string,"%[^,],%[^,],%[^,],%[^,],%[^,]", &val1, &val2, &val3, &val4);

我得到空字段之前的所有值,以及空字段之后的意外结果。

当我从 sscanf() 中删除空字段的表达式时,

sscanf(string,"%[^,],%[^,],,%[^,],%[^,]", &val1, &val2, &val3, &val4);

一切顺利。

由于我不知道什么时候会得到一个空字段,有没有办法重写表达式来优雅地处理空字段?

最佳答案

如果您使用 strtok 并将逗号作为分隔符,您将获得一个字符串列表,其中一个或多个字符串的长度为空/零。

看看我的 answer here获取更多信息。

关于c - 如何在支持空字段的同时使用 sscanf 解析逗号分隔字符串中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508754/

相关文章:

c++ - 将 argv[ ] 的输入转换为 char?

c++ - 字符串到二进制文件

csv - 微软Azure的架构。 CSV 到 SQL

c - 当我用 c 语言编译程序时,为什么会得到一个 undefined reference (例如 `glColor3f')?

c - ARM 平台上没有来自 SIGABRT 信号的回溯?

c - Linux 内核在启动时执行的第一个操作是什么?

python - 如何使用正则表达式提取 Pandas 数据框中的特定内容?

java - 在第一列中查找重复项并根据第三列取平均值

mysql - 第 1 行不包含所有列的数据

python - 使用 Pandas 和有效值列表检测 CSV 列中的拼写错误