C语言易错知识点集合之getchar()

C语言易错知识点集合之getchar()

因为病毒太厉害了,电脑没带回家只能用手机写一篇不能用代码展示,望理解。

getchar()
函数原型:int getchar(void)//必须包含stdio.h头文件
返回类型:int整型
返回值:用户输入的ASCⅡ码,出错返回-1

char x;
x=getchar();
printf(“x=%c”,x);

  • 打开控制台当在键盘上按下1回车后,x=1此时的1是一个字符char只占一个字节,不是整形int占四个字节。我们最后加上printf(“i=%d”,x)得到i=49(1的ASCII码=49),这里可以看出当两个数比较大小时应当注意两个数必须为同一类型。

  • 不仅仅这样getchar还有个问题,就是大家所关注的缓冲区问题,提到缓冲区不得不提下stdin流。还是上面的例子我们在最后加上g=getchar();printf(“g=%c”,g);按下1空格2回车再按回车最后结果x=1,g= ‘ ’(代替空格),是不是不符合我们想要的呢?因为当我们按下后,从键盘到缓冲区中的字符依次是1‘ ’2‘ ’,不要忘记空格也是一个字符,我们可以最后再加上printf(“i=%d”,g)得到i=32(空格ASCII码=32)所以要想x=1,g=2按下12空格,不过这样程序运行完后缓冲区任然有个’\n’回车符,不过在程序运行完毕从新运行时缓冲区会刷新的,但是有没有消除这个回车呢?

  • ①在进行单个字符赋值时只需要在每输入的字符后加上getchar(),这里的getchar并没有对任何变量进行赋值,只是从缓冲区中把’\n’取出来了。

  • ②在字符串赋值时最常用while((c=getchar())!=’\n’) //每个getchar()依次读入一个字符 。意思就是说,直到遇到回车符才结束循环,而getchar()函数就是等待输入(或缓冲区中的数据)直到按回车才结束,所以实现了整个字符串的输出。
    总结:以图的形式让大家更加直观的理解。
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值