[我发誓我已经在职业生涯中完成了100次,并且认为%s
做到了,但是我发现没有。
特别是我有
iParsed = sscanf( pszValue, "%4d-%2d-%2d%c%2d:%2d:%f%s",
&stm.tm_year, &stm.tm_mon, &stm.tm_mday, &cSeparator,
&stm.tm_hour, &stm.tm_min, &dSec, &pcFollow );
pcFollow
是const char*
。我只是想知道此日期/时间格式的内容,因此我可以1)检查该点是否附加了可选字段,或者2)抱怨字符串中的垃圾。在其他情况下,我可能要3)继续分析。
%s
但是需要char*
,而不是char**
。它想要一个实际的字符缓冲区来保存我的示例中%f
之后的内容的副本。
我唯一的想法是使用%n
捕获已解析的字符数,并将其用作pszValue
的偏移量。实际上,这很好,只不过这不是我记得的方式。
您可以使用%n
格式说明符。它用到目前为止消耗的字符数填充int
变量:"%4d-%2d-%2d%c%2d:%2d:%f%s%n"