提问人:Александр Попов 提问时间:9/2/2023 更新时间:9/2/2023 访问量:32
具有空 (SQL NULL) 值的 fscanf 操作
fscanf operation with empty (SQL NULL) values
问:
我正在阅读一个带有 fscanf 的制表符分隔的 csv 文件。
该文件是从 SQL 数据库中获取的,其中某些列为 NULL。因此,有些地方在选项卡之间没有 csv 中的任何内容,然后 fscanf 误入歧途并错误地生成格式化的记录。
有没有一种优雅的方法来检查格式化条目中的缺失值?
struct Path {
unsigned int objectId, parentObjectId, changeId, prevId, nextId;
unsigned short regionCode, areaCode, cityCode, placeCode, planCode, streetCode;
char updateDate[10], startDate[10], endDate[10];
bool isActive;
char path[300];
}
while (!feof(ah))
{
path = (struct Path*) malloc(sizeof(struct Path));
fscanf(ah, "%u %u %u %u %u %u %u %u %u %u %u %s %s %s %u %s",
&path->objectId, &path->parentObjectId, &path->changeId,
&path->regionCode, &path->areaCode, &path->cityCode, &path->placeCode, &path->planCode, &path->streetCode,
&path->prevId, &path->nextId,
&path->updateDate, &path->startDate, &path->endDate,
&path->isActive, &path->path);
free(path);
}
fclose(ah);
答: 暂无答案
评论
fscanf
不太适合您的目的。(有人说它不适合任何目的。当使用空格时,它会使用任意运行的空格 - 例如,成对的连续制表符。此外,它大多不区分空格、制表符、换行符和其他空格字符。获取第三方解析器,或者编写自己的解析器,而无需依赖 .fscanf
fscanf