sscanf()格式字符串的官方定义?

时间:2011-02-23 17:34:06

标签: c++ c standards scanf

我用不同的语言(不是C或C ++)实现我自己的sscanf()版本。

我大部分都完成了。我只想简单介绍格式字符串含义的一些细节。但是,在网上搜索时,我发现并非sscanf()的所有文档都是相同的。

例如,有些人说%i处理八进制和十六进制,而其他人甚至不包括这种格式类型。有些人讨论%[而其他人没有讨论。此外,似乎省略了一些细节。

关于格式字符串应该如何解释的最权威的文档是什么?

我并不狂热地遵守标准。但我希望尽可能与任何现有的格式字符串兼容。

修改

如果有人有兴趣,我已经在线发布了我的C# implementation of sscanf()代码。

5 个答案:

答案 0 :(得分:4)

标准的全部要点(或者说大部分要点)都是为这样的问题提供答案,所以(至少对我而言)似乎标准的副本是明显的参考。与真实标准相比,为了节省一些钱,您可以很容易地从标准的draft开始。

答案 1 :(得分:2)

见ISO / IEC 9899:1999 7.19.6.2(fscanf) - 这是最后一个C标准

答案 2 :(得分:1)

你需要决定你正在实施什么。您可以遵循C或C ++标准之一或某些特定于平台的扩展(POSIX,GNU,MSVC)。

如果您决定遵循其中一个标准,请查看并遵循规范。对于特定于平台的内容,您需要遵循特定平台的文档。

答案 3 :(得分:1)

虽然您必须购买ISO标准,但可以免费获得几乎完全相同的ISO / IEC 9899:TC2(ISO C99)。例如:www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf。 sscanf函数在7.19.6.7节中定义。但是,所有格式说明符细节都在7.19.6.2中的fscanf描述中给出。

答案 4 :(得分:1)

除了C标准之外,还有一个定义sscanf的POSIX标准。那个是免费的,http://www.unix.org/version3/。和POSIX一样,它向上兼容。