为了账号安全,请及时绑定邮箱和手机立即绑定

关于scanf函数是怎么执行的?请问可以说一下scanf函数的执行细节吗?

关于scanf函数是怎么执行的?请问可以说一下scanf函数的执行细节吗?

C C#
慕容708150 2021-12-09 11:07:31
scanf是接收用户输入,程序这时候是否就停在这条语句?这个接收的过程是怎么样的?用户每输入一个数,它立即接收还是等待用户按回车键后一次性接收?它怎么识别用户的输入是否是正确的?
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

按F10跳转到scanf输入函数断点,进而按F11就如scanf函数。印象中是在一个.c文件里执行的中断处理标准输入输出的过程,你可以按Alt+8看到其反汇编,其实是一些机器指令发送控制让CPU进行执行的,具体汇编语言我是不太懂的。看那个也比较繁琐,目前也不再流行去使用汇编语言,如果你感兴趣的话,可以去了解C语言的编译过程,编译原理,这就相对更深了。
回到这个问题,接收过程讲的差不多了。用户输入一个数,它应该说是被立即送到一个缓冲区去了。而不是立即接收,变量就获得了值。这是C语言scanf函数的功能设定。它需要接收一个标志一个数据输入完成,可以是空格,可以是回车,或者你给定了的格式,用逗号或者其他,那么就取出了一个数据。结束一个数据的输入。总的scanf函数执行过程,是一个系统缓存入栈出栈的过程。

scanf输入是否正确,是按其格式来判断的,百科名片上有些解析,比如
scanf("%d%d",&a,&b);
如果两个数输入的都不是整形,那么就是0
while(scanf("%d",&a)!=EOF)这是一种判断输入是否正确的方式

查看完整回答
反对 回复 2021-12-12
?
守候你守候我

TA贡献1802条经验 获得超10个赞

当程序中出现scanf这条语句的时候,系统会停留在这等待用户输入。怎样接收要看你是怎样的输入格式比如scanf(“%d %d”),输入一个字符按 一次空格,如果中间强制用逗号格开的话,输入的时候就要用逗号了。当输入完成时候,按回车即输入完毕,数据储存在变量里。
如果要判断用户是否输入正确,在scanf语句下面加上判断语句就可以了if else,如果需要用户重新输入的话,就需要一个循环语句while

查看完整回答
反对 回复 2021-12-12
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

加一个头文件#include<string>
然后直接string year;后面的就是string name; string grades;什么的,
然后还是用cin接收就行了啊
接收完了你用一个函数去判断是不是数字或者字母

查看完整回答
反对 回复 2021-12-12
  • 3 回答
  • 0 关注
  • 411 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信