如何从键盘输入数字字符|只有在输入完数据再按回车键后,该行数据才被送入内存上的键盘缓冲区里,形成输入流

本文介绍了如何使用C++的getchar()函数从键盘输入数字字符,并探讨了输入流的工作原理,包括键盘驱动程序如何处理回车键以及输入流状态的管理。此外,还提供了一个示例程序,用于接收并转换4个9以内的数字字符。同时,文章讨论了在C++中如何处理非法输入,如字符和浮点数,以及如何通过cin.clear()和cin.ignore()来清除错误状态和缓冲区中的无效输入。
摘要由CSDN通过智能技术生成

1、如何从键盘输入数字字符?用如getchar()函数时即可,即从键盘输入7,获得即是字符'7'。

2、只有在输入完数据再按回车键后,该行数据才被送入内存上的键盘缓冲区里,形成输入流。

在输入完数据再按回车键后,该行数据才被送入内存上的键盘缓冲区里这一工作是由键盘驱动程序来完成的,即键盘驱动程序(编程设计该程序时)是以回车键为标志符将暂存在键盘这个输入设备的缓存器(属于键盘这个硬件设备的一部分)里的输入数据送入内存上的键盘缓冲区里,编程设计该程序时文件结束符是作为一个普通字符对待的,未将其作为啥标志符的作用,所以键盘驱动程序遇到文件结束符输入时不会像回车键输入那样发生将暂存在键盘这个输入设备的缓存器(属于键盘这个硬件设备的一部分)里的输入数据送入内存上的键盘缓冲区里的情况。而像

getchar()函数或是cin的输入符>>等输入函数(在软件层次上相对于键盘驱动程序,是其上层接口函数)开始执行时都是先判断内存上的键盘缓冲区里的数据是否为空,为空的话就处于等待状态,直到有数据来时才开始读取内存上的键盘缓冲区里的数据到相应的变量上。可以参看-控制台和端口 I/O等内容。

getchar()函数或是cin的输入符>>等输入函数(在软件层次上相对于键盘驱动程序,是其上层接口函数)则是在编程设计该函数时以文件结束符作为将其读取的输入流(缓存)的状态是否置为无效的标志之一。其他无效字符,视具体情况而定,如cin>>var,如果var是char类型的变量,则输入字符k,k不会视为无效字符而让输入流状态置为无效,如果var是int或是float等非字符数据类型的变量,则输入字符k,k会视为无效字符而让输入流状态置为无效。

附加:

从键盘输入4个9以内的数字字符

2014年02月25日 ⁄ 综合⁄ 共 471字 ⁄ 字号 小 中 大 ⁄ 评论关闭

 从键盘输入4个9以内的数字字符,将其转换为4位十进制数后显示出来。

/*分析:⑴将每个数字字符c变成对应的数字,即将以ASCII码表示的数字字符变成一位十进制数,方法为:c-'0',如c='8'时,c-'0'=8。转换中若遇非'0'~'9'字符则结束转换。
  ⑵将每次变换的一位十进制数,从高位开始,按位加权,变成多位的十进制数,放在变量data中。如输入1,2,3,4,则结果应是按%d格式显示的1234。
  */

#include "stdafx.h"
#include"stdio.h"
int main(int argc, char* argv[])
{
 char c;
 int i,data=0;
 printf("Input char:");
 for(i=0;i<4;i++)
 {
 c=getchar();//输入一数字字符。
 if(c<'0'||c>'9')//判断输入字符是否在'0'~'9'范围内。
  break;
 data=data*10+c-'0';//计算当前数据值。
 }
 printf("data=%d/n",data);
 return 0;
}

参考:http://www.xuebuyuan.com/1854888.html

=========================================================

C++中怎样在输入流中区别int类型和字符类型?(进一步的问题,有补充浮点数的情况)

在实际测试中,使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值