【发布时间】:2012-12-29 00:36:09
【问题描述】:
我正在为学校编写程序;这是我第一次使用 C。
我正在使用 fgets 读取输入,但有时 fgets 不会阻塞(将程序抛入无限循环)。要回答每个人的第一个问题,不,我没有使用 scanf 之前留下额外的\n,这会导致这个问题。我曾一度使用 sscanf,但这与 fgets 相关,所以我认为这不是问题。
我们提供了一些处理套接字的代码。我已经浏览了它,但找不到问题的根源。由于篇幅原因,代码没有包含在内,但如果有帮助,我可以包含它。
长话短说,除了 scanf 问题之外,fgets 是否有任何理由不阻止输入?任何帮助表示赞赏!
编辑:我应该在早些时候更清楚地说明这一点,但在这种情况下,我仅将 fgets 用于标准输入。
【问题讨论】:
-
发布代码更有用...只要 SSCE
-
你在检查
fgets是否返回错误? -
阅读
fgets的手册。重读此评论的第一句话。确保在理解后处理fgets的返回值。 -
是的,遇到错误不会阻塞。检查errno中设置的错误码。
-
啊!谢谢。
fgets正在返回null,errno设置为 9。有什么想法吗?