有没有理由在fgets + sscanf上使用scanf或fscanf

时间:2011-06-18 11:57:14

标签: c scanf

由于您没有从流中读取,因此它似乎更灵活。 两者都提到,因为您可以轻松更改读取的时间/代码位置,然后您可以使用c流(我错了,你可以创建字符串,等同于c FILE *流)?

另外,我不知道我对scanf感到有点奇怪。 scanf的任何利弊都将受到赞赏。

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

2 个答案:

答案 0 :(得分:2)

C FAQ中已经解决了这个问题。

  

为什么每个人都说不使用   SCANF?我该怎么用?

如果您正在阅读受信任文件(不是stdin),那么使用fgets + sscanf代替fscanf是没有意义的。确实使用scanf(从stdin读取)是有问题的。

答案 1 :(得分:1)

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