字符专用输入输出函数 getchar() putchar()


提示:以下是本篇文章正文内容,下面案例可供参考

一、字符专用接收函数

在c语言中,想要输入字符有两种方法,第一种是scanf函数输入字符,第二种则是字符专用接收函数

1.1 scanf实现字符接收

关于scanf的具体详细的使用方法可以看小编所写的详解printf和scanf

int main() 
{
	char arr; 
	scanf("%c", &arr);#   
	printf("%c",arr);   
	return 0;   
}

在这里插入图片描述

1.2 字符专用接收函数getchar

getchar定义

在这里插入图片描述

在这里插入图片描述

代码演示

int main()
{
	char arr;
	arr = getchar();
	printf("%c",arr);
	return 0;
}

在这里插入图片描述

注意

  • 字符专用接收函数一次只能接收一个字符,如果输入多个字符只获取第一个字符。
  • 字符接收函数没有参数,字符接收函数是从键盘上获取字符值。

1.3 练习

键盘上输入hello,输出是什么字符?

int main()
{
	char arr;
	arr = getchar();
	printf("%c",arr);
	return 0;
}

在这里插入图片描述

1.4 利用循环使字符接收函数接收字符串的元素

在这里字符接收函数,一次只能接收一个字符,如果想要接收字符串,我们可以用到循环

int main()
{
	char arr = '0';
	do
	{
		if(arr != '\n')
		{
			arr = getchar();
			printf("%c", arr);
		}
	} while (arr != '\n');
	return 0;
}

分析

do while循环条件是获取当前的字符,所以他的结束条件是输入的该字符串函数不是换行符(’ \ n’),因为我们在输入一个字符串以后,我们会按下回车键,按下回车键,获得的当前字符为换行符,所以我们获得不是换行符的时候,才说明我们还没有获取结束,如果我们获得当前字符是回车符,那就说明字符串的字符还没有获取结束。所以在这里我们输入一组字符串,先是接收第一个字符,然后打印,判断不是换行符,然后我们在获取下一个字符。

疑问

为什么我们使用getchar接收字符串进行循环打印,为什么能全部打印出来,而不是每次打印第一个字符呢?字符接收函数不是接收一个字符么,为什么还能打印出后面所有的字符呢?

这是因为scanf和getchar并不是直接从键盘上拿数据,而是存在一个缓冲区域,然后getchar从缓冲区域一个一个进行拿值,直到所有值拿完,我们这里拿完第一个字符元素后,缓冲区域还剩下剩下的字符元素,而之前的元素被读走了,不会在存在于缓冲区域,所以可以使用循环接收所有的字符而不是只接收第一个。


二、字符专用输出函数

2.1 printf实现打印字符

关于printf具体详细的使用方法可以看小编所写的详解printf和scanf

int main()
{
	char ch = getchar();
	printf("%c",ch);
	return 0;
}

在这里插入图片描述

2.2 字符专用输出函数putchar

putchar定义

在这里插入图片描述

代码演示

int main()
{
	char ch = getchar();
	putchar(ch);  
	return 0;  
}

在这里插入图片描述

注意

  • 字符专用输出函数一次只能输出一个字符,如果输出多个字符只输出第一个字符。

  • 字符输出函数有参数,字符输出函数参数是字符表达式 (变量,或者字符)。
    在这里插入图片描述
    在这里插入图片描述

  • 使用方法和getchar一样,使用循环输出原理和getchar一样都是从缓冲区域进行输出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值