是否有任何理由在fgets上使用scanf或fscanf+;sscanf

是否有任何理由在fgets上使用scanf或fscanf+;sscanf,c,scanf,C,Scanf,因为你不是从流中阅读,它看起来更灵活。 两者都提到,由于您可以轻松更改读取的计时/代码位置,因此您可以使用c流(我错了吗,您可以将字符串等转换为cFILE*streams) 另外,我也不知道,我只是觉得scanf有点奇怪。如果您对scanf有任何优点/缺点,我们将不胜感激 编辑:我的意思是使用scanf或fscanf与fgets+sscanf的组合如果您期望的是整数,但您读取的是浮点或其他不兼容类型,您可以检查scanf的返回值。如果它返回零,那么您没有读取整数——但是使用fgets您无法读取。

因为你不是从流中阅读,它看起来更灵活。 两者都提到,由于您可以轻松更改读取的计时/代码位置,因此您可以使用c流(我错了吗,您可以将字符串等转换为c
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的组合