初学C语言遇到的一些问题(1)——scanf篇

scanf的使用中,返回值表示实际读取到的数据个数。如果读取成功,返回读取的数据个数;失败则返回EOF(-1)。例如,输入非数字字符时,会返回输入正确部分的个数,而不是-1,因为仍有输入,但未按预期格式。只有在无任何有效输入(如Ctrl+Z)时,才会返回-1表示读取失败。
摘要由CSDN通过智能技术生成

scanf的使用

  1. &符号:不要忘记加
  2. scanf的返回值
  1. 如果读取成功,返回的是实际读取到的数据的个数
  2. 如果函数读取失败,返回EOF,EOF的值是-1

输入

  • 当我们随机输入三个数时,最后打印出来的结果是3.

对于目前的输入来说,因为我们定义了3个整型变量,所以我们输入的是整型,是数字,scanf()当然只会认同是数字的输入;你如果输入的有不是数字的,比如说输入了15 56 n,这三个,看一下结果
输出
就会发现打印出来的不是3,是2.


  • 但值得注意的是,当你硬要不按人家定义的类型输入,比如让你输入数字,你非要都输入字母,那看一下结果
    输出
    你就会发现,打印出来的是0。

  • 如果你还记得上面灰色方框的两句话,
  1. 如果读取成功,返回的是实际读取到的数据的个数
  2. 如果函数读取失败,返回EOF,EOF的值是-1

第一条应该明白了吧,看第二条,对于上一个例子,我输入了3个字母,结果是零,逻辑上来说,就是没正确的读取到数字,所以返回值确实应该是0,程序的结果没有问题。不过为什么不像第二条说的那样返回 -1 呢,是因为我们并不是没有输入东西,换句话说,当出现控制台黑框框的时候,我们起码在键盘上敲了3个字母,我们输入了,但不是按人家要求输入的,所以这并不是读取失败,那怎么样就是读取失败呢。
读取失败EOF
注意啊,屏幕上的^Z是咱们计算机的快捷键“Ctrl + Z”,它不是输入的,就好比你复制粘贴东西到百度查找,“Ctrl + C和Ctrl + V”是不会显示出来的, 这就相当于是什么都没有输入,那程序就什么都没读取到。所以这时候就返回的是EOF,也就是 -1 .


  • 总结:明确scanf返回值是 实际读取到的数据的个数,对于EOF或者是Ctrl + Z之类的,目前我还没办法解释,以后就慢慢理解了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值