2011-06-18 43 views
0

由于您没有从流中读取,它似乎更加灵活。 这两个提到,既然你可以很容易地改变读取的时间/代码位置,那么你可以用一个c流(我错了,你可以使字符串,等流到c FILE *流)?是否有任何理由通过fgets + sscanf使用scanf或fscanf

另外,我不知道我只是觉得有点奇怪scanf。任何优点/缺点scanf将不胜感激。

编辑:我的意思是使用scanf或的fscanf的VS与fgets + sscanf的

回答

2

这在C FAQ中得到很好的解决。

为什么大家都说不要使用 scanf?我应该用什么来代替?

如果从一个值得信赖的文件(不stdin)读书,有一个在使用fgets + sscanf代替fscanf没有意义的。确实使用scanf(从stdin读取)是有问题的。

1

如果你期待一个integer的组合,但你读floating point或其他一些不兼容的类型,你可以检查scanf返回值。如果它返回零,那么你没有阅读integer - 但与fgets你不能这样做。此外,通过检查scanf的返回值,您可以看到读取的项目数量。

+0

虽然你可以用sscanf做到这一点。 –

+0

您也可以尝试尝试从错误的字符串中读取其他不同类型/简单模式的次数。我不认为有一个简单的方法来做到这一点与scanf。 –

+0

@Roman A. Taycher:那是关于'scanf' over'fgets' – lovesh

相关问题