【C-函数】scanf函数原理

本文详细介绍了C语言中的行缓冲概念,以及scanf函数的工作原理。在输入数据时,输入的字符会存储在缓冲区中,直到按下回车键才会进行I/O操作。在使用scanf读取数据时,缓冲区可能包含输入的换行符' '。通过一个实际的scanf案例,展示了当读取字符类型时,如何因为换行符的存在导致未阻塞等待新输入的问题。
摘要由CSDN通过智能技术生成

1、行缓冲

  行缓冲的意思就是我们输入的字符放入缓冲区,直到输入了回车键进行换行才进行 I/O 操作。

2、scanf原理

  在C中的标准输入函数scanf,使用的就是行缓冲的标准输入缓冲区。而我们在结束输入,也就是按下回车键进行换行时,缓冲区不仅会有我们输入的数据,还会有我们输入的换行字符 '\n ’
  比如我们使用scanf输入 一个整型数据 10,当我们按下回车后,标准输入缓冲区缓冲的不是“ 10 ”,而是 “10/n”

3、scanf案例

1)代码

#define _CRT_SECURE_NO_WARNINGS // 这个宏就像一个开关,定义了表示 stdio.h 允许使用scanf,一般不用scanf_s
#include<stdio.h>

int main() {
	int a;
	float b;
	char c;
	scanf("%d",&a);
	printf("a = %d\n",a);
	scanf("%f", &b);
	printf("b = %f\n",b);
	scanf("%c",&c);
	printf("c = %c\n",c);
	return 0;
}

2)结果

5
a = 5
6
b = 6.000000
c =


D:\Works of IT\VisualStudio\cskaoyan\
按任意键关闭此窗口. . .

  输入的字符c的scanf并没有阻塞等待输入字符到缓冲区,而是读取了缓冲区的一个 ’ \n '。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值