C语言数据输入scanf( )和getchar( )
来源:互联网 发布:英雄美工钢笔9076 编辑:程序博客网 时间:2024/05/22 07:04
格式化输入函数scanf( )
scanf( )功能:
按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到argument参数所指向的内存单元,函数返回值为读入并赋给argument的数据个数,出错则返回0。
scanf( )使用形式:
scanf("格式字符串",输入项首地址列表);
scanf( )函数执行时将输入的数据流按指定格式转换为数据,存入相应的存储单元中。
格式字符串:
%[*][width][F|N|h|l]type
(1)类型字符type:
(2)宽度指示符width:
width是一个十进制正整数的形式,表示该输入项最多可接收的字符个数。也就是说,读取输入数据中相应的n位,按需要的位数赋给相应的变量,多余部分被舍弃。但读取过程中如遇到空格、Tab或其他不可转换的字符,输入个数可少于宽度指示。
(3)赋值抑制字符"*":
表示本输入项对应的数据读入后,不赋给相应的变量,该变量的数据将由下一个格式指示符指定的数据输入。
scanf( )函数的数据输入操作:
(1)输入多个数据的分隔处理:如果在格式字符串中不包含除了格式指示符之外的普通字符,则在输入多个数据时,可以使用空格隔开,或者用Tab键分开,或者以回车键隔开。
(2)当“格式字符串”中出现普通字符时,普通字符不会显示,必须在规定输入时原样输入。
(3)当scanf( )函数中的格式字符串中出现转义字符(如"\n"),系统并不把它当转义字符解释,从而产生一个控制操作,而是将其视为普通字符,所以也要原样输入。
(4)输入数据时,遇到以下情况,系统认为该数据输入结束:
- 遇到空格、回车键或者Tab键。
- 遇到输入域宽度结束。
- 遇到非法输入。例如在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0~9、小数点和正负号构成)。
(5)使用格式说明符"%c"输入单个字符时,空格和转义字符均作为有效字符被输入。
单个字符的输入函数getchar( )
getchar( )功能:
从标准输入设备(键盘)输入一个字符,并返回输入字符的ASCII值。
用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(需要注意的是:回车字符也放在缓冲区中.)
当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.且将用户输入的字符回显到屏幕.
如用户在按回车之前输入了不止一个字符(回车也算),其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键(所以第二次读取到回车字符才算读完缓冲区),而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
注意:
- getchar( )只能用于单个字符的输入,一次只能输入一个字符。
- 使用getchar( )输入字符是,需按下回车键表示输入结束。
- getchar( )将回车也作为一个输入,所以输入连续的两个数据时需要注意。
- 如果只是想输入一个字符并输出,也可以使用在putchar( )函数中嵌入getchar( )函数的形式。
putchar(getchar( ));
。 - 参见http://www.cnblogs.com/zhenzhen123/p/4972745.html
阅读全文
1 0
- C语言数据输入scanf( )和getchar( )
- 【c语言】scanf和getchar详解
- scanf("%c")和getchar
- C中输入函数的理解 -- getchar和scanf
- 关于C语言里getchar和scanf的思考
- C语言基础-函数getchar和函数scanf小结
- C语言getchar()、getch()、scanf()对比(一)
- C语言getchar()、getch()、scanf()对比(二)
- scanf 格式化输入 getchar
- C gets()、scanf和getchar()的区别
- C语言使用scanf函数获取数据后,使用getchar()无法获得字符的处理方法
- 用getchar和%C输入字符型数据
- C/CPP点滴积累—scanf,getchar之输入缓冲区
- C语言中getchar()、gets()和scanf()的特点以及scanf产生的多余回车符问题
- C语言的scanf输入
- c: scanf 与 getchar
- C语言输入中对scanf和gets的讨论
- C语言输入中对scanf和gets的讨论
- [LeetCode] 520. Detect Capital
- epoll机制:epoll_create、epoll_ctl、epoll_wait、close用法详解
- 8月5日集训
- [PAT乙级]1060. 爱丁顿数(25)
- SQL注入#和$区别与总结
- C语言数据输入scanf( )和getchar( )
- jquery判断checkbox是否选中的3种方法
- MySQL 5.7.X 解压缩安装方法
- spring拦截器
- 常用数据适配器 SimpleAdapter
- 2017 多校4 1009 Questionnaire
- POJ
- POI: 导入数字时,在获取cell时已经损失精度问题
- E