c语言的getchar()方法,getch()方法,scanf()函数

首先看一下我遇到的问题:

希望得到的效果: 

错误的效果: 

 

 

为什么ch2值为空??没有让输入ch2?  换了scanf函数也是一样。

原因是因为getchar()这是在键盘缓冲区读取数据不是从键盘(终端)读取的。 当键盘输入a和回车(回车也是字符),会先被写入到键盘缓冲区,然后getchar()方法从缓冲区读取数据,每次只从缓冲区读取一个字符,剩下的会留下来等下一个getchar()读取。

解决方法:

1:新创建一个字符变量,用于接收getchar()。

2:或者清除缓冲区(fflush(stdin); rewind(stdin);

 

 

 

scanf函数也是同理!!!! 

#include "stdio.h"
 int main(){
     char ch1,ch2,ch3;
     scanf("%c",&ch1);
     ch3=scanf("%c",&ch3);
     printf("ch1=%c\n",ch1);
    scanf("%c",&ch2);
     printf("ch2=%c\n",ch2);
     return 0;
 }

 

补充一下getch()如下

1:getch函数在C语言中使用时需包含的头文件为 conio.h ,应写为#include<conio.h>;
2:getch的功能:从标准输入设备(键盘)读入一个字符,不回显在显示器上.

#include "stdio.h"
#include "conio.h"
 int main(){
     char ch1,ch2,ch3;
     ch1=getch();
     printf("ch1=%c\n",ch1);
     return 0;
 }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值