关于Scanf键盘输入指定域宽的问题,请求学长学姐们帮我看一看,我不知道问题在哪里

从未、何曾、未曾` 2025-04-25 06:38:30

 输出框123之前的输出不用管,那是我前面尝试printf输出函数的输出结果。

我的本意是从键盘输入123和456两个数,指定1个输入宽度,预想应该是得到1和4,但是结果如上,第一个是符合预想,但是第二个不符合,请帮帮我,我刚开始接触c,现在很喜欢编程。

...全文
1295 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
forever74 04-25
  • 打赏
  • 举报
回复

%1d%*d,%d
try

  • 举报
回复
@forever74 谢谢学长or学姐的回复,我得到了我想要的输出,但是我不太明白加一个%*d,为什么就可以了,*不是忽略输入修饰符吗?没加之前,是不是在把456存到f的地址之前,被什么抢先存进去了,被截断了,实际上456根本就没有存进去。实际输出结果如图,再次感谢!
forever74 04-26
  • 举报
回复
@从未、何曾、未曾` %*d用来把23给“浪费”掉,也就是你说的忽略。
  • 举报
回复
@forever74 谢谢,虽然还是有些不懂,但是这应该就是“学习不休,问题不止”吧!只不过我尝试了一下,如果是输入三个数,需要在前两个输入格式中都加入%*d,以此类推,输入n个数,需要加n-1个%*d,感觉好麻烦! 还有, 我的Scanf函数好像用不了,我是使用Visual Studio 2019扣代码,当我使用scanf做一个数的简单输入,就有如下的错误提示:“‘scanf’:this function or variable may be unsafe,consider use scanf_s instead, to disable deprecation.”所以我只能使用scanf函数
3条回复
  • 打赏
  • 举报
回复

因为第二个输入字符要匹配逗号,你的输入不符合规范,所以f没有得到输入,只正确输入了一个参数d,你打印一下scanf_s的返回值就知道了。

  • 举报
回复
@日立奔腾浪潮微软松下联想 感谢你的回复,但是我不太明白“第二个输入字符要匹配逗号”的意思,我输入的时候不是在123和456之间原样输入逗号了吗?
@从未、何曾、未曾` %1d,%d 输入的第一个字符要匹配数字,第二个匹配逗号

70,017

社区成员

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

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