猿问

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

scanf是接收用户输入,程序这时候是否就停在这条语句?这个接收的过程是怎么样的?用户每输入一个数,它立即接收还是等待用户按回车键后一次性接收?
它怎么识别用户的输入是否是正确的?

慕容708150
浏览 413回答 3
3回答

慕容森

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

守候你守候我

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

鸿蒙传说

加一个头文件#include<string>然后直接string year;后面的就是string name; string grades;什么的,然后还是用cin接收就行了啊接收完了你用一个函数去判断是不是数字或者字母
随时随地看视频慕课网APP
我要回答