是否有任何理由在fgets上使用scanf或fscanf+;sscanf
因为你不是从流中阅读,它看起来更灵活。 两者都提到,由于您可以轻松更改读取的计时/代码位置,因此您可以使用c流(我错了吗,您可以将字符串等转换为c是否有任何理由在fgets上使用scanf或fscanf+;sscanf,c,scanf,C,Scanf,因为你不是从流中阅读,它看起来更灵活。 两者都提到,由于您可以轻松更改读取的计时/代码位置,因此您可以使用c流(我错了吗,您可以将字符串等转换为cFILE*streams) 另外,我也不知道,我只是觉得scanf有点奇怪。如果您对scanf有任何优点/缺点,我们将不胜感激 编辑:我的意思是使用scanf或fscanf与fgets+sscanf的组合如果您期望的是整数,但您读取的是浮点或其他不兼容类型,您可以检查scanf的返回值。如果它返回零,那么您没有读取整数——但是使用fgets您无法读取。
FILE*
streams)
另外,我也不知道,我只是觉得scanf有点奇怪。如果您对scanf有任何优点/缺点,我们将不胜感激
编辑:我的意思是使用scanf或fscanf与fgets+sscanf的组合如果您期望的是
整数
,但您读取的是浮点
或其他不兼容类型,您可以检查scanf
的返回值。如果它返回零,那么您没有读取整数
——但是使用fgets
您无法读取。此外,通过检查scanf
的返回值,您可以看到读取的项目数。如果您期望的是整数
,但您读取的是浮点
或其他不兼容类型,则可以检查scanf
的返回值。如果它返回零,那么您没有读取整数
——但是使用fgets
您无法读取。此外,通过检查scanf的返回值,您可以看到读取的项目数。这在中得到了很好的解决
为什么每个人都说不用
斯坎夫?我应该用什么来代替
如果您是从受信任的文件(而不是
stdin
)中读取,那么使用fgets+sscanf
而不是fscanf
是没有意义的。实际上,使用scanf
(从stdin
读取)是有问题的。这一点在本文中得到了很好的解决
为什么每个人都说不用
斯坎夫?我应该用什么来代替
如果您是从受信任的文件(而不是
stdin
)中读取,那么使用fgets+sscanf
而不是fscanf
是没有意义的。实际上,使用scanf
(从stdin
读取)是有问题的。您可以使用sscanf来实现这一点。您也可以尝试在出现错误时读取其他不同类型的字符串/simpe模式。我不认为有一个简单的方法可以用scanf实现。编辑:我的意思是使用scanf或fscanf与fgets+sscanf的组合,但是你可以用sscanf实现。你也可以尝试读取其他不同类型/simpe模式,在出现错误时,根据你的意愿多次读取字符串。我不认为有一个简单的方法可以用scanf来做到这一点。编辑:我的意思是使用scanf或fscanf与fgets+sscanf的组合