字母小写转大写简单实例,getchar()原理和fflush(stdin)

先来看一段代码

#include <stdio.h>
#include <stdlib.h>
int main(){
    char c;
    while((c=getchar()) !=EOF){
        printf("%c\n",c-32);
    }
    system("pause");
    return 0;
}

在这里插入图片描述

此时我们可以输入多个字符,键盘输入的字符都会存到缓冲区,getchar()会先从缓冲区读取内容,所以当输入多个字符时,条件成立,getchar()先读取缓冲区内容,以此输出,输出他们的大写字母。最后还输出了一个? 因为当输入afad时,会按enter结束,此时enter键会在缓冲区,对应的是’\n’ 因而会有此结果。那么改变一下写法。


#include <stdio.h>
#include <stdlib.h>
int main(){
    char c;
    while(fflush(stdin),(c=getchar()) !=EOF){
        printf("%c\n",c-32);
    }
    system("pause");
    return 0;
}

在这里插入图片描述

在循环条件中加入了fflush(stdin),清除缓冲区,getchar()一次只读取一个字符,当输入多个字符时,循环条件成立,getchar()先读取第一个字符,进入循环,输出对应的大写字母,完成循环后,先进行了fflush(stdin),所以缓冲区的其它字符就没有了,所以就不能输出多个字符了,要重新输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值