你了解C语言中的输入函数吗?

本文详细介绍了C语言中的输入函数scanf、getchar和gets的使用方法,包括输入格式、输入缓冲机制,并通过实例演示了它们在字符和字符串输入中的不同行为。还探讨了输入缓冲器的概念以及其在处理输入错误时的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

说的输入函数,就不得不提一下什么时缓冲区了。
缓冲区又称为缓存,是内存中的一部分,它是内存空间预留的一定的存储空间,主要作用是缓冲输入输出的数据,那预留的一定存储空间就称之为缓存区。

一、输入函数有哪些

1.scanf函数

使用该函数时必须在C程序的开头写上#include<stdio.h>。该函数适用于所有数据的输入,对于字符与字符串来说,它们还有自己独立的输入输出函数,我们会在后面介绍到。下面我们来介绍一下scanf的基本语法:
当我们想使用scanf输入10和20时

int a,b;
scanf("%d%d",&a,&b);

这时,我们只需在公屏上输入

10 20

然后回车即可。这里要注意,若我们在输入函数%d与%d中间加的是逗号,则在公屏上我们要输入

1020

即%d与%d之间是什么,我们就要在公屏上输入什么,若两者之间什么都没加,则按空格处理。如

int a,b;
char c;
scanf("%d%c%d",a,c,b);
printf("%d %c %d",a,c,b);

则我们要在公屏上输入数字字符数字。

2.gatchar函数

与scanf一样,在使用getchar函数时,我们要引用头文件<stdio.h>。该输入函数只用于字符的输入,下面我们来介绍它的基本用法:
当我们想对两个字符变量同时赋值Q和W时

char a,b;
a=getchar();
b=getchar();
putchar(a);
putchar(b);

只需在公屏上输入

QW

即可。注意,若你输入的是

Q W

则相当于a=Q,b=空格,这是因为getchar函数的输入机制,它只能从输入缓冲区中取一个字符,在这里它取了Q和空格。

3.gets函数

由于字符串比较特殊,所以在C语言中专门设立了关于字符串的库函数<string.h>,gets的头文件就是<string.h>。gets是专门用来对字符串的输入,其基本用法如下:
若我们要输入字符串Hello world时

char arr[20];
gets(arr);
puts(arr);

在公屏上输入

Hello World

打印结果为

Hello World

若用scanf函数时

char arr[20];
scanf("%s",arr);
puts(arr);

在公屏上输入

Hello World

打印结果为

Hello

这是为什么呢?其实对于字符串来说,scanf与gets的判断结束标志不一样。
对于scanf来说,它判断一个字符串输入完成的标志是空格或\n,就刚刚的案例来说,Hello后碰到了空格,所以空格后的东西没有赋值该arr;但gets判断一个字符串输入完成的标志只有\n,所以当对gets来说,我们只需要输入
Hello World。

二、输入缓冲器

1.概念

输入缓冲区:
当我们输入数据时,程序并不立即获取,而是在我们按下回车键时,程序才从输入缓冲区中读取。
这是程序内部执行命令时的步骤,根据这个理论,我们就可以解决很多程序执行时我们不理解的地方。

2.应用

若我们在scanf函数

int a,b;
scanf("%d%d",&a,&b);

输入

1020

回车,这时我们会发现,公屏上输出的不是

10 20

而是

10 -858993460

很显然,这并不是我们想要的结果。其原因,就是再取第二个整型变量时取到了‘,’。
我们最后再看一个有趣的实例:

#include<stdio.h>

int main()
{
	char i;
	i = getchar();//获取第一字母
	while (i != '\n')
	{
		if ((i >= 'a' && i < 'w') ||( i >= 'A' && i < 'W'))
		{
			i = i + 4;
		}
		else if ((i >= 'w' && i <= 'z') || (i >= 'W' && i <= 'Z'))
		{
			i = i - 22;
		}
		printf("%c", i);
		i = getchar();
	}
	return 0;
}

当main函数走到第一个“i = getchar();”时,程序就跳进了输入缓冲区,这是我们在公屏上输入一串字母,第一个字母被while以外的i取走,剩下的字母则挨个被while以内的i取走。当i取到‘\n’时循环结束。

总结

以上就是今天要讲的内容,本文仅仅粗浅的简单介绍了输入函数和输入缓存器,而要更深层的理解它,则要多学习,多练习。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jeimi电创

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值