【发布时间】:2011-06-18 11:57:14
【问题描述】:
由于您不是从流中读取数据,因此它看起来更加灵活。
两者都提到,因为您可以轻松更改读取的时间/代码位置,那么您可以使用 c 流(我错了,您可以制作字符串,等到 c FILE * 流中)吗?
另外,我不知道我只是对scanf 感到有些奇怪。 scanf 的任何优点/缺点将不胜感激。
编辑:我的意思是使用 scanf 或 fscanf 与 fgets+sscanf 的组合
【问题讨论】:
由于您不是从流中读取数据,因此它看起来更加灵活。
两者都提到,因为您可以轻松更改读取的时间/代码位置,那么您可以使用 c 流(我错了,您可以制作字符串,等到 c FILE * 流中)吗?
另外,我不知道我只是对scanf 感到有些奇怪。 scanf 的任何优点/缺点将不胜感激。
编辑:我的意思是使用 scanf 或 fscanf 与 fgets+sscanf 的组合
【问题讨论】:
C FAQ 很好地解决了这个问题。
为什么大家都说不用 扫描?我应该改用什么?
如果您正在读取受信任的文件(不是 stdin),则使用 fgets + sscanf 代替 fscanf 是没有意义的。确实使用scanf(从stdin读取)是有问题的。
【讨论】:
如果您期待integer,但您读取的是floating point 或其他不兼容的类型,您可以检查scanf 的返回值。如果它返回零,那么你没有读过integer - 但是fgets 你不能这样做。另外,通过查看scanf的返回值,可以看到读取的项目数。
【讨论】: