鱼C论坛

 找回密码
 立即注册
查看: 950|回复: 8

[已解决]C语新手关于scanf函数返回值的一点小问题

[复制链接]
发表于 2020-4-11 20:47:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先我不知道为什么这样三个%d,给两个取地址之后系统不显示输出结果,希望有人可以从帮忙解释一下原理。
其次,我看到网上说scanf的返回值是由输入的数据即%d决定的,不是由后面的地址&决定的,这一点我也不是很明白,希望大佬们可以帮忙解答一下。
感谢!!!!!
最佳答案
2020-4-11 20:59:01
你的scanf()要接受3个值,但是你却只给两个值,之后的值都作废,程序当然会出错咯
第二点不用太明白(我也不明白),反正就是计算机进行计算的时候是拿地址计算的(所有值都有个地址,指针也一样)
最后你的i 值就是输入的个数(2个)
(如有错误多多包涵)
批注 2020-04-11 203909.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-11 20:55:53 | 显示全部楼层
写了三个%d就要传3个地址进去,你只传了两个

直接百度一下scanf看返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 20:59:01 | 显示全部楼层    本楼为最佳答案   
你的scanf()要接受3个值,但是你却只给两个值,之后的值都作废,程序当然会出错咯
第二点不用太明白(我也不明白),反正就是计算机进行计算的时候是拿地址计算的(所有值都有个地址,指针也一样)
最后你的i 值就是输入的个数(2个)
(如有错误多多包涵)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 21:02:15 | 显示全部楼层
然后这是楼上说的东西,我从豆瓣找的


1. scanf 函数是有返回值的,它的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);
如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);
如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。   
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。

所以可以使用下面的代码来处理输入:
while (scanf("%s %c %c", str, &oldchar, &newchar) == 3) /* 或!= EOF , 但前者更好 */
{
; //处理
}

2. 为什么前面 scanf 的格式串里面,%s和%c中间需要空格呢?
那是因为如果没空格的话。。。oldchar输入的就是空格了= =.

3. 顺便说一下,printf的返回值是输出的字符数,例如,printf("1234")的返回值是4,而printf("1234\n")的返回值是5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-12 11:03:47 | 显示全部楼层
BngThea 发表于 2020-4-11 20:55
写了三个%d就要传3个地址进去,你只传了两个

直接百度一下scanf看返回值

是,我想问一下,前两个%d是有地址的,那为什么那两个数字无法输出?那两个数字去哪了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 12:52:26 | 显示全部楼层
本帖最后由 stong 于 2020-4-12 12:54 编辑

出错在第六行4
i= scanf("%d%d%d",&x,&y)
俩个问题
1.I 你给他附了两个值
2.你写了三个%D却只给了两个变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-12 13:34:52 | 显示全部楼层
一颗大棗 发表于 2020-4-12 11:03
是,我想问一下,前两个%d是有地址的,那为什么那两个数字无法输出?那两个数字去哪了?

没有那么智能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-13 14:50:03 | 显示全部楼层
编程要严谨,朋友慢慢来!我学的C的时候也是这样的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 16:11:28 | 显示全部楼层
Cool_Breeze 发表于 2020-4-13 14:50
编程要严谨,朋友慢慢来!我学的C的时候也是这样的!

好的 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 08:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表