23)C语言之getchar()以及缓冲区

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int text();

int main()

{

    int ch = 0;

    while ((ch = getchar()) != EOF)//EOF-end of file-文件结束标志---(-1),当getchar读取失败或者把文件读//完就会返回EOF

    {

       putchar(ch);//putchar输出一个字符

       printf("\n");

       break;

    }

    text();

    return 0;

}

//代码2

int text()

{

    int ch1 =0;

    //ch1 = getchar();

    while ((ch1 =getchar())!= EOF)//按下ctrl+z-getchar就读取结束

    {

        //ch1 = getchar();

       if (ch1 < '0' || ch1 > '9')

       {

           printf("请输入的ch1 大于'0' 以及小于 '9':");

           continue;

       }  

       putchar(ch1 );

       break;

    }

    return 0;

}

函数原型:int getchar( void );

getchar的缓冲区

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()

{

    int ch = 0;

    ch = getchar();//从键盘上输入字符后按enter会结束getchar的进程,然后下一条的输出会显示在下一行

    printf("ch=%c\n", ch);

    int ch1 = 0;

    while ((ch1 = getchar()) != EOF)//注意现在getchar()的缓冲区还有\n没有读取会被这里的直接读取!

       //可以在while的前面再加一个如getchar();来取走\n

    {

       if (ch1 < '0' || ch1 > '9')

       {

           printf("请输入的ch1 大于'0' 以及小于 '9':");

           continue;

       }

       putchar(ch1);

       break;

    }

    return 0;

}

24)C语言之for循环与do{}while();循

输入函数的缓冲区

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//输入函数如scanf,getchar共用缓冲区

int main()

{

    char password[20] = { 0 };

    scanf("%s", password);//scanf确认缓冲区没有数据请求键盘输入,这里输入123456

    /*

       解决方法->清除缓冲区getchar();

    */

    printf("请确认密码(Y/N):>");

    int ch = getchar();//scanf之前拿走了123456还有\ngetchar拿走了因此getchar没有请求键盘输入

    if (ch == 'Y')

       printf("密码确认成功");

    else

       printf("密码确认失败");//这句语句执行了

    return 0;

}

清除缓冲区内的内容

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//清除缓冲区进阶

int main()

{

    char password[20] = { 0 };

    printf("请输入密码:>");

    scanf("%s", password);//数组名就是一个地址,这里输入123456 abcd,scanf读到空格返回

    getchar();//scanf取走了123456,这里getchar只能取走一个空格,一个getchar取一个字符

    /*

        进阶清除缓冲区

        int tmp=0;

        while((tmp=getchar())!='\n')

        {

            ;

        }

    */

    printf("请确认密码(Y/N):>");

    int ch = getchar();//此时cha

    if (ch =='Y')

        printf("确认成功");

    else

        printf("确认失败");

    return 0;

}

//getchar返回的是整型1、,getchar读取的是字符,而字符在内存中以ASCII码形式储存,getchar返回的是ASCII

                //  2、当输入的字符错误使getchar会返回EOF,而EOF本质上是-1-1不可能是ASCII值,但是整型

//gets函数可以处理空格问题即读一行,如

gets(password);//输入123456 abcd

//123456 abcd存入到数组password中,’\n’不会读取进去

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪孤儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值