字符输入/输出(getchar()、putchar())

一、getcha()和putchar的()的使用

二、使用过程需注意的问题

三、解决方案原理

一、

getchar()和putchar是专门用于字符输入/输出的函数。getchar()作用是用户用输入设备输入一个字符(可以是转义字符,打印字符),回车键表示输入结束。putchar()是向显示器屏幕输出一个字符。

以下即两者的对比,(char A=getchar();等价char A;scanf("%c",A)),代码验证。

//用getchar()和putchar()                       //寻常方法
#define _CRT_SECURE_NO_WARNINGS 1               #define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)                   #pragma warning(disable:6031)  
#include<stdio.h>                               #include<stdio.h>      
int main()                                      int main()
{                                               {
	char A;                                         char A;
	printf("输入一个字符:");                        printf("输入一个字符:");
	A = getchar();                                  scanf("%c", &A);
	putchar(A);                                     printf("%c", A);
	return 0;                                       return 0;
}                                               }

二、注意事项

注意:空格,回车,Tab键均认为是字符

输入 ,回车后,输入流:字符+换行符/回车符。getchar()只能输入一个字符,则换行符会残留在缓冲区(输入流)中,影响下一次输入(将存于缓冲区的换行符/回车符读入,被后面的变量作为有效字符读入)。

看代码遇到的问题:(并不能按照一个一个输入的方式输入,第一次输入字符后,回车键被暂放在缓冲区,第二次其被当做有效字符被变量读入)

//输入字符方式为:输入a 回车 再输入b 回车       //第二种输入字符方式:连续输入ab 回车
#define _CRT_SECURE_NO_WARNINGS 1            #define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)                #pragma warning(disable:6031)
#include<stdio.h>                            #include<stdio.h>
int main()                                   int main()
{                                            {
	char A,B;                                    char A,B;
	printf("输入两个字符:");                      printf("输入两个字符:");
	A = getchar();                               A = getchar();
	B = getchar();                               B = getchar();
	printf("A=%c,B=%c", A, B);                   printf("A=%c,B=%c", A, B);
	return 0;                                    return 0;
}                                            }

代码运行结果:                               代码运行结果:
输入两个字符:a                              输入两个字符:ab
A=a,B=                                     A=a,B=b

三、解决方案原理

方案一:在每次调用scanf("")或getchar()函数后,再次用getchar()函数吸收残留到缓冲区的换行符或回车符,避免被后面的变量当作有效字符读入。

方案二:stdio.h中的fflush函数清空缓冲区(注意:非标准形式,ANSIC只规定函数fflush()来清空输出数据流,并未对清理输入缓冲区做任何规定,使用fflush()函数可能会出现程序的可移植性问题)

            fflush(stdin);

//采用方案一的方法,用getchar()函数                   
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include<stdio.h>
int main()
{
	char A,B;
	printf("输入两个字符:");
	A = getchar();
	getchar();
	B = getchar();
	printf("A=%c,B=%c", A, B);
	return 0;
}
 
代码运行结果:
输入两个字符:a

b
A=a,B=b

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值