C语言学习笔记[24]:循环语句while②

getchar()的使用场景

int main()
{
	char password[20] = {0};
	printf("请输入密码:");//输入 123456 后回车
	scanf("%s", passwoed);//数组名本身就是数组地址
	printf("请确认密码:Y/N");
	int ch = getchar();
	if('Y' == ch)
		printf("确认成功\n");
	else
		printf("确认失败\n");
	return 0;
}

执行结果却根本没有让输入Y/N,而是直接现实确认失败了

因为输入123456回车后,缓冲区中存放的是 123456\n 

接着scanf拿走了123456

getchar看到缓冲区中有数据,则直接拿走\n

此时ch中存放的\n

所以直接显示确认失败 

想要解决上述问题,可以进行如下操作,从而清理缓冲区的字符

#include <stdio.h>

int main()
{
    char password[20] = {0};
    printf("请输入密码:"); // 输入 123456 后回车
    scanf("%s", password);
    int tmp = 0;
    while ((tmp = getchar()) != '\n') // 一直用 getchar() 并把取出的数据存入 tmp 中,直到取出 \n
    {
        ;
    }
    printf("请确认密码:Y/N");
    int ch = getchar();
    if ('Y' == ch)
        printf("确认成功\n");
    else
        printf("确认失败\n");
    return 0;
}

下面的代码输出什么呢?

#include <stdio.h>

int main()
{
    int ch = 0;                 
    while ((ch = getchar()) != EOF) // 输入字符
    {
        if (ch < '0' || ch > '9') // ch 小于字符 0 大于字符 9 时
            continue;
        putchar(ch);
    }
    return 0;
}

 ch 小于字符 0 大于字符 9 时,跳过循环不打印,否则打印ch

即 只打印 0~9

相关推荐

  1. C# while循环语句

    2024-07-17 01:24:01       32 阅读
  2. C# —— while循环语句

    2024-07-17 01:24:01       26 阅读
  3. C语言分支和循环语句while

    2024-07-17 01:24:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 01:24:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 01:24:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 01:24:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 01:24:01       69 阅读

热门阅读

  1. $@和$?在shell脚本中什么意思

    2024-07-17 01:24:01       22 阅读
  2. 前端面试题日常练-day92 【Less】

    2024-07-17 01:24:01       21 阅读
  3. Map和Set的迭代器原理

    2024-07-17 01:24:01       20 阅读
  4. tomcat为什么要自定义类加载器?

    2024-07-17 01:24:01       21 阅读
  5. Web 安全之 VAPT (漏洞评估与渗透测试)详解

    2024-07-17 01:24:01       21 阅读
  6. VScode编译c++代码json配置

    2024-07-17 01:24:01       24 阅读
  7. 【DRAM存储器三十四】LPDDR4介绍--MR和IO结构

    2024-07-17 01:24:01       18 阅读
  8. AI发展中的伦理挑战与应对策略

    2024-07-17 01:24:01       24 阅读
  9. 2024睿抗机器人开发者大赛CAIP编程赛题解(c++)

    2024-07-17 01:24:01       25 阅读
  10. ardupilot 系统时间见解

    2024-07-17 01:24:01       17 阅读