关于C语言scanf语句的疑问

[复制链接]
查看11 | 回复3 | 2021-1-27 06:28:22 | 显示全部楼层 |阅读模式
scanf的返回值可以用来作为循环的条件来结束循环,因此很多人常用输入特殊字符让循环结束。但scanf在检测到文件结尾时会返回EOF也就是-1,那么能不能用scanf的值是否等于-1来做为判断循环结束的条件呢?文件结尾与输入结尾有不同吗?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:28:22 | 显示全部楼层
可以的
对于字符的输入结尾结尾来说一般是'\n'换行符,对应的ascii码是10
文件结尾符是EOF,可以通过scanf的返回值来直接获得,输入结尾符只能在输入字符串的字符里获得,也就是要判断数组元素是否为'\n'
回复

使用道具 举报

千问 | 2021-1-27 06:28:22 | 显示全部楼层
引用1楼qybao的回复:可以的
对于字符的输入结尾结尾来说一般是'\n'换行符,对应的ascii码是10
文件结尾符是EOF,可以通过scanf的返回值来直接获得,输入结尾符只能在输入字符串的字符里获得,也就是要判断数组元素是否为'\n'

如果输入的是整数的话,文件结尾与输入结尾一样是吗?
回复

使用道具 举报

千问 | 2021-1-27 06:28:22 | 显示全部楼层
不一样的,如果是整数形式,输入非整数,直接就返回文件结尾,所以拿不到输入结尾的
当然如果输入缓存没被清空(stdin没有fflush)的话,所以你可以继续读取字符getchar之类的来获取输入字符,最终也能拿到输入结尾
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行