1.getchar和putchar的作用

getchar          输入一个字符,但是其输出的内容是ASCII码值
ch = getchar     用一个变量去接收ASCII值
putchar(ch)    输出一个字符到屏幕上getchar如果返回失败的话也会输出EOF EOF的本质是-1
  • 代替了scanf 和 printf 的输入输出字符的功能

2.案例分析

#include<stdio.h>
int main()
{int ch = 0;while ((ch = getchar()) != EOF)putchar(ch);return 0;
}

  • 代码并没有写入  \n  ,但是结果出现了自动换行的结果,这是为什么呢?
getchar和键盘之间有一个输入缓冲区,用于暂时存放键盘打出的字符,输入一个字符,
此时这个字符被存入输入缓冲区中,然后显示面板上会出现闪烁的光标,敲一下空格之后,
输入缓冲区会显示空格的字符\n,此时getchar开始工作,先接收字符,输出之后,
还会去接收\n   导致换行出现

3.getchar与putchar的具体应用场景

1.输入密码案例

#include<stdio.h>
int main()
{char password[20] = { 0 };int ch = 0;printf("请输入密码:");scanf("%s", password);printf("请确认密码(Y/N):");ch = getchar();if (ch == 'Y')printf("确认成功\n");elseprintf("确认失败\n");return 0;}
  • 代码可以运行,但是无法确认,getchar无法正常工作,原因是什么呢?

1.原因分析

  • scanf不会取 \n,一旦有空格,scanf的工作就立即停止了

3.情景分析

  • 此时说明  \n(即空格) 影响了代码的运行,那么就需要再写代码将 \n  去除掉。
#include<stdio.h>
int main()
{char password[20] = { 0 };int ch = 0;printf("请输入密码:");scanf("%s", password);getchar();//将\n拿走了,而且不需要输出,因为是为了消灭\nprintf("请确认密码(Y/N):");ch = getchar();if (ch == 'Y')printf("确认成功\n");elseprintf("确认失败\n");return 0;}

4.增加情景(当密码中出现多个空格以及\n)

#include<stdio.h>
int main()
{char password[20] = { 0 };int ch = 0;printf("请输入密码:");scanf("%s", password);while (getchar()!='\n'){;}printf("请确认密码(Y/N):");ch = getchar();if (ch == 'Y')printf("确认成功\n");elseprintf("确认失败\n");return 0;}

2.只打印数字不打印字符习题

#include<stdio.h>
int main()
{char ch = '\0';while ((ch = getchar()) != EOF){if (ch < '0' || ch > '9')continue;putchar(ch);}return 0;
}

  • '0'的ASCII值是48,'9'的ASCII值是57,说明ch的范围就是48--57,只打印这个范围内的数字字符,其他字符不打印。

getchar与putchar在C语言中的作用相关推荐

  1. 循环语句在c语言中的作用是什么,C语言中循环语句的使用

    C语言中的循环语句 在C语言中,有三种类型的循环语句: for语句.while语句和do While语句. 分别介绍如下: 1.for循环语句 for语句格式为: for(表达式1;表达式2;表达式3 ...

  2. sort在c语言中的作用,c语言中sort的用法详解.docx

    c语言中sort的用法详解.docx C语言中SORT的用法详解C语言的学习很多是比较复杂的,那么C语言中SORT的用法的用法你知道吗下面学习啦小编就跟你们详细介绍下C语言中SORT的用法的用法,希望 ...

  3. goto在c语言中的作用,关键字goto在C语言中的使用

    1.goto关键字基础知识关键字goto从字面的意思就是"去哪里"的意思,专业一点的话表示无条件跳转的意思(有学过汇编的小伙伴应该会觉得非常像jump指令),在C语言中的使用格式是 ...

  4. scanf在c语言中的作用是什么?

    scanf()函数 scanf()是C语言中的一个输入函数.与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include .(在有一些实现中,printf ...

  5. list在c语言中的作用,在C语言中大略实现VC++中的LISTARRAY功能方法(一)

    在C语言中大概实现VC++中的LISTARRAY功能方法(一) #ifndef __LISTARRAY_H__ #define __LISTARRAY_H__ #include "rtthr ...

  6. main在c语言中的作用,main函数在C语言中是怎么定义的?有什么作用?

    main函数在C语言中是怎么定义的?有什么作用? 更新时间:2019-10-24 13:55 最满意答案 额,main不是程序的最开始啦.拿用glibc的程序来说,C语言执行的过程应该是 _start ...

  7. struck在c语言中的作用,C语言-选择题及答案.doc

    C语言-选择题及答案.doc 计算机程序设计基础(C语言) 单项选择练习题 说明:带*号的对非信息学院的同学不作要求. 一.基本概念 1. C语言程序是由 C 构成的. A)一些可执行语言 B)mai ...

  8. continue在c语言中什么作用,continue在c语言中什么意思?

    continue在c语言中是退出循环的意思,continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环. continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环.conti ...

  9. 二维数组在c语言中的作用,C语言中的二维数组

    1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...

最新文章

  1. php 面对对象总结,PHP 面向对象总结
  2. linux curl https报错: curl: (35) SSL connect error
  3. C语言Selection Sort选择排序的算法(附完整源码)
  4. python scipy样条插值函数大全(interpolate里interpld函数)
  5. 作者:李崇纲,男,北京金信网银金融信息服务有限公司常务副总经理。
  6. jpa存储byte到postgresql
  7. 在Silverlight 2应用程序中集成Virtual Earth
  8. Java web(2012/2/23)
  9. c#登陆qq空间无视JS加密
  10. [BZOJ4173]数学
  11. 商业化产品经理与用户产品经理区别
  12. Google 按图搜索的原理
  13. STM32F103_study43_The punctual atoms(STM32 Echo experiment based on serial communication )
  14. 逍遥模拟器调试模式设置
  15. Yii-- 应用(Applications)
  16. Linux 限制IP访问与白名单
  17. win7修改本计算机端口,如何更改Windows7 的远程桌面端口3389
  18. java中 exe是什么文件_从文件位置运行Java中的.exe文件
  19. Ubuntu新装系统必装软件
  20. 新一轮车检改革下车检市场的破局探究

热门文章

  1. 2017网络安全产业研究报告学习笔记
  2. 【Cad To Word】高清晰度导入Word做法
  3. 王者荣耀无限火力服务器,王者荣耀无限火力4.0
  4. 写字机器人软件_加码末端配送,「九号机器人」推出室内室外两款配送机器人...
  5. 从NXP官网下载的SDK如何导进MCUXpresso IDE
  6. 计算机编程课程英语单词,计算机编程常用英语单词
  7. android电视盒配置自启动,电视盒子怎么开机自启动软件?巧用当贝市场,一招轻松搞定...
  8. webuploader 使用
  9. 用C语言输出1到100的奇数
  10. Java —— Decorator 装饰器模式