2013-03-25 66 views
3

我试图解析另一个功能与此fprintf中写了一个文件:的fscanf用绳子和长

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:故障(OK)
  • file_start:0(KO)
  • file_period:0(ko)
  • FILE_SIZE:0(KO)

我在做什么错?

+0

什么返回值?这会告诉你它做了多少转换,如果它不是4,那么你说这些字段被解析为0,它们根本没有被解析(不会被'fscanf()'改变)。 – unwind 2013-03-25 13:40:35

+0

不知道确切的返回值。但是它大于0,因为我测试scanf的错误来检查它的返回值。 – 2013-03-25 14:06:25

回答

3

%[^;$] ==>替换字符串格式"%[^;$]s"删除s因为[]更换s因此无需任何更多的s

+0

完美!完全解决。非常感谢 – 2013-03-25 14:05:14

+0

不客气 – MOHAMED 2013-03-25 14:52:16