关于C语言scanf语句的疑问

阿尔托莉雅的臣子 2020-01-30 11:54:38
scanf的返回值可以用来作为循环的条件来结束循环,因此很多人常用输入特殊字符让循环结束。但scanf在检测到文件结尾时会返回EOF也就是-1,那么能不能用scanf的值是否等于-1来做为判断循环结束的条件呢?文件结尾与输入结尾有不同吗?
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-01-30
  • 打赏
  • 举报
回复
不一样的,如果是整数形式,输入非整数,直接就返回文件结尾,所以拿不到输入结尾的
当然如果输入缓存没被清空(stdin没有fflush)的话,所以你可以继续读取字符getchar之类的来获取输入字符,最终也能拿到输入结尾
  • 打赏
  • 举报
回复
引用 1 楼 qybao的回复:
可以的
对于字符的输入结尾结尾来说一般是'\n'换行符,对应的ascii码是10
文件结尾符是EOF,可以通过scanf的返回值来直接获得,输入结尾符只能在输入字符串的字符里获得,也就是要判断数组元素是否为'\n'
如果输入的是整数的话,文件结尾与输入结尾一样是吗?
qybao 2020-01-30
  • 打赏
  • 举报
回复
可以的
对于字符的输入结尾结尾来说一般是'\n'换行符,对应的ascii码是10
文件结尾符是EOF,可以通过scanf的返回值来直接获得,输入结尾符只能在输入字符串的字符里获得,也就是要判断数组元素是否为'\n'

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧