scanf()函数定义:
if (缓冲区为空)
调阻塞函数;
调赋值函数;
执行下面的代码:
for (i = 0;i < 10;i++)
{
scanf("%c",&ch);
printf("%c",ch);
}
代码执行过程:
1、调用第一个scanf()后,缓冲区为空,调用阻塞;
2、例如输入abcd(回车符)到缓冲区(回车符表示结束阻塞);
3、调赋值,将ch = a;并清除缓冲区的a值,将b作为缓冲区第一个值。然后结束第一个scanf();
4、调第一个printf();打印出a
5、调第二个scanf()后,检查到缓冲区不为空,调赋值。将ch = b;结束第二个scanf()
6、调第二个printf();打印出b
......
本文详细解析了C语言中scanf函数的工作流程,特别是当输入缓冲区为空及非空时的处理方式,通过具体示例帮助理解scanf如何读取字符。
928

被折叠的 条评论
为什么被折叠?



