编程中getchar()的灵活使用
来源:互联网 发布:网络借贷的危害 编辑:程序博客网 时间:2024/05/19 19:12
getchar()在C程序中的功能是接收一个字符,当我们在连续输入字符的时候getchar()会给你意想不到的效果。下面是做的一些测试:
首先看下面的这个程序:
#include<stdio.h> #include<stdlib.h> int main(void) { int a,b,c; printf("please input num a:\n"); scanf("%d",&a); printf("please input num b:\n"); scanf("%d",&b); printf("please input num c:\n"); scanf("%d",&c); printf("%d,%d,%d",a,b,c); }
运行结果
那么把int改成char之后会是什么结果呢?来看下一段代码:
#include<stdio.h> #include<stdlib.h> int main(void) { char a,b,c; printf("please input num a:\n"); scanf("%c",&a); printf("please input num b:\n"); scanf("%c",&b); printf("please input num c:\n"); scanf("%c",&c); printf("%c,%c,%c",a,b,c); }
运行结果:
为什么会显示这样的结果?你猜到是什么原因了吗?
我们再来看一下源代码:程序连续接收了三个字符,在C中enter键代表一个换行符,所以当输入完a的值‘q’之后按下enter键,换行符立马被字符b接收了,然后程序再向下走,输入c的值‘w’。结果就会按顺序显示a,b,c的值,我们已经知道a='q',b='\n',c='w';所以结果就会显示两行。
如果我们加入getchar()会有什么结果呢?
我们再来看一下改进的程序:
#include<stdio.h> #include<stdlib.h> int main(void) { char a,b,c; printf("please input num a:\n"); scanf("%c",&a); getchar(); printf("please input num b:\n"); scanf("%c",&b); getchar(); printf("please input num c:\n"); scanf("%c",&c); printf("%c,%c,%c",a,b,c); }运行结果:
现在为什么会正常显示我们想要的结果呢?原因就是getchar()把enter键所表示的字符接收了,所以就会达到想要的效果了。
这无非就是输入的规范问题,如果我们运行第二个程序,用另一种方法输入的结果:
这同样可以得到想要的结果。
编译器规定输入的时候并不是立即回显,而是存到一个缓冲区里面。当遇到换行字符会释放缓冲区的数据,并清空缓冲区。
0 0
- 编程中getchar()的灵活使用
- getchar()的灵活使用
- 编程中灵活使用批处理文件
- [原]编程中灵活使用批处理文件
- VC编程工具的灵活使用
- VC编程工具的灵活使用
- VC编程工具的灵活使用1
- VC编程工具的灵活使用2
- VC编程工具的灵活使用3
- ASP.NET中表格的灵活使用
- h5中a标签的灵活使用
- getchar使用的几个问题
- scanf、getchar的使用
- getchar() putch()的使用
- getchar()的使用
- getchar的使用
- getchar()的使用
- VC编程环境下的灵活使用使用
- 简析TCP的三次握手与四次分手
- SDUT OJAOE网上的关键路径
- linux命令行下使用反斜杠“\”调用别名的原命令
- HTML5权威指南笔记(一)
- 详解CSS浮动的清除
- 编程中getchar()的灵活使用
- 数学题-计算相交圆的公共部分面积
- Delphi IDHTTP控件:GET/POST 请求
- Delphi Cookie获取及使用
- HTTP 常见异常状态及Delphi IDHTTP 控件处理方式
- Delphi 中调用JS文件中的方法
- Delphi 实现 图灵机器人API(IDHTTP POST )
- Delphi webbrowser 的一些方法
- 使用 Git 和 GitHub 托管项目源码