【问题标题】:How can I create an fscanf format string to accept white space and comma (,) tokenization如何创建 fscanf 格式字符串以接受空格和逗号 (,) 标记化
【发布时间】:2010-05-19 15:41:12
【问题描述】:

我有一些分析代码 (myprog),它使用以下内容吸收数据:

 if(5 == fscanf(in, "%s%lf%f%f%f", tag, & sec, & tgt, & s1, & s2))

效果很好。但是在我有用逗号分隔的数据文件的情况下,我目前正在做类似的事情:

 sed 's/,/ /g' data | myprog

我可以修改fscanf()函数中的格式字符串来接受这两种分隔格式吗?

【问题讨论】:

    标签: c scanf


    【解决方案1】:
    fscanf(in, "%[^, ]%*[, ]%lf%*[, ]%f%*[, ]%f%*[, ]%f", tag, &sec, &tgt, &s1, &s2)
    

    应该有效吗?

    【讨论】:

    • 修复第一个正则表达式(%[^,] 应该是 %[^, ]),我会投票给你。我以前不熟悉 '*' 说明符,谢谢。
    【解决方案2】:

    这个呢:

    char tmp; fscanf(in, "%s%c%lf%c%f%c%f%c%f", 标签, &tmp, & sec, &tmp,& tgt, &tmp,& s1, &tmp, & s2)

    如果您不关心哪个单个字符分隔您的值,只需读取它并将其存储在一次性变量中即可。

    【讨论】:

    • 如果没有空格怎么办?
    • 我只是假设原始问题中有一个字符分隔符 - 实验是发现之母。
    猜你喜欢
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2022-06-20
    相关资源
    最近更新 更多