我必须从一个.txt文件中读取数据,这是一个数据示例:
1 | SMAX 0.3848 | 0.234 | 0.15
我只对阅读第一、第三和第四栏感兴趣(所以我想放弃那个奇怪的SMAX 0.3848)。到目前为止我有这个:
while(fgets(buffer, BUFFER_SIZE, fp) != NULL)
{
sscanf(buffer, "%d | %*s | %lf | %lf", &id, &ra, &dec);
}
但是它不起作用,我认为是因为“SMAX 0.3848”,我错误地丢弃了它。我的问题是,我怎样才能读取这些数据?
注意:我的数据集中有很多列,还有一些“奇怪的数据”需要丢弃。
谨致问候。
最佳答案
问题是当它发现一个空白时它停止扫描,试试这个1
if (sscanf(buffer, "%d |%*[^|]|%lf |%lf", &id, &ra, &dec) == 3)
/* proceed to use `id', `ra', `dec' */
else
/* invalid line of input */
要了解
"%*s"
的含义/请阅读"%*[^|]"
的手册页。1使用有意义的变量名,使用今天的文本编辑器,这是没有额外的工作,因为自动完成功能将帮助你很多,有意义的变量名将使程序很容易理解几个月/几个星期后,当你回到它的原因(维护,重用)。
关于c - 使用sscanf读取由|分隔的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32953018/