使用字符串和长整型的 fscanf

3

我正在尝试解析另一个函数使用以下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)

文件名可以正常读取。但是文件起始位置、文件周期和文件大小始终为0,即使不应该如此。

例如,字符串:

DS;failures;1363978800;600;144

被解析成这样:

  • file_name: failures (ok)
  • file_start: 0 (ko)
  • file_period: 0 (ko)
  • file_size: 0 (ko)

我做错了什么?


返回值是什么?这将告诉您它进行了多少次转换,如果不是4,则您在说字段被解析为0时并不完全正确,它们根本没有被解析(fscanf()不会更改它们)。 - unwind
不知道确切的返回值,但它肯定大于0,因为我测试了scanf以检查其返回值是否有错误。 - Fabio A. Mazzarino
1个回答

3

将字符串格式"%[^;$]s"替换为%[^;$] ==> 删除s,因为[]会取代s,所以不再需要s


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接