【问题标题】:fscanf with string and long带字符串和长的 fscanf
【发布时间】:2013-03-25 13:34:27
【问题描述】:

我正在尝试解析另一个函数使用此 fprintf 编写的文件:

fprintf(file, "DS;%s;%ld;%ld;%u\n", ds->name, ds->start, ds->period, ds->size)

我正在使用这个 fscanf:

fscanf(file, "DS;%[^;$]s;%ld;%ld;%u", file_name, &file_start, &file_period, &file_size)

file_name 读取没有问题。但 file_start、file_period 和 file_size 始终为 0,即使不是预期的。

例如,字符串:

DS;failures;1363978800;600;144

解析如下:

  • file_name:失败(正常)
  • file_start: 0 (ko)
  • file_period:0 (ko)
  • file_size:0 (ko)

我做错了什么?

【问题讨论】:

  • 返回值是多少?这将告诉您它进行了多少次转换,如果不是 4,那么您说字段被解析为 0 并不完全正确,它们根本没有被解析(fscanf() 没有改变)。
  • 不知道确切的返回值。但它大于 0,因为我测试了 scanf 以检查其返回的错误。

标签: c csv ansi scanf


【解决方案1】:

用这个%[^;$]替换字符串格式"%[^;$]s" ==>删除s,因为[]替换了s,所以不再需要s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2018-03-21
    • 2015-03-03
    相关资源
    最近更新 更多