我必须从.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",我错误地丢弃了它。我的问题是,我怎么能读到这些数据?
注意:我的数据集中有很多列,还有其他的#34;奇怪的数据"我需要丢弃。
最好的问候。
答案 0 :(得分:2)
问题是"%*s"
它在找到空格时停止扫描,试试这个 1
if (sscanf(buffer, "%d |%*[^|]|%lf |%lf", &id, &ra, &dec) == 3)
/* proceed to use `id', `ra', `dec' */
else
/* invalid line of input */
要了解"%*[^|]"
的含义/读取scanf(3)
的手册页。
1 使用有意义的变量名称,今天的文本编辑器它没有额外的工作,因为自动完成功能将帮助你很多,有意义的变量名称将使程序容易了解几个月/周后你因某些原因(维护,重复使用)回到它时。
答案 1 :(得分:2)
而是像这样写 -
"%s"
答案 2 :(得分:0)
阅读LOGGER.info("printing lalala");
(或其任何变体)将停止在空格处阅读。