scanf()函数的使用
来源:互联网 发布:php数组按值排序 编辑:程序博客网 时间:2024/05/18 03:58
假如程序中需要在屏幕上输入一个整型,scanf()函数,如下:scanf(“%d",&a);如果此时输入的是一个char型,结果会如何?
下面说一下scanf()的使用规则:
1、如果使用了字段宽度读取输入,那么scanf()在字段结尾或者在第一个空白字符处终止。如果第一个空白字符不是数字,比如使用%d读取整数,而输入A,则scanf()会停在那里,并把A放回输入,并没有把任何值赋给指定的变量,程序下一次读取输入时,它就在A处重新开始,如果程序中只有%d说明符,scanf()永远也不会越过那个A,而且,如果使用带有多个说明符的scanf()语句,函数会在第一个出错的地方停止读取输入。其他数字说明符读取输入与使用%d的情况相同。
2、scanf()的返回值:返回成功读取的项目的个数。如果没有读取任何项目,返回0.当它检测到文件结尾,返回EOF(EOF在头文件stdio.h中定义的特殊值,一般#define把EOF定义为-1.
3、除了%c以外的说明符会自动跳过输入项之前的空格。如果在格式字符串中%c之前有一个空格,那么scanf()将会跳到第一个非空白字符处。即,scanf(“%c”,&ch):读取在输入中遇到的第一个字符。而scanf(“ %c”,&ch):读取遇到的第一个非空白字符。
如何使用scanf()解决读入类型不一致的问题问题:
1)fgets(buf,sizeof(buf),stdin);将输入流stdin中的字符全部读取字符数组buf中,小于buf大小。
sscanf(buf,”%d”,&hoge);可避免输入流输入多余的字符影响后面流的输入与输出。读取buf
2)fflush(stdin):是对输出流使用的,他不能用于输入流标准中并没有定义用于输入流的fflush()
3)while(scanf(“%d”,&hoge)!= 1)
printf(“输入错误,请再次输入!”);会导致程序无限循环下去。
示例:
#include <stdio.h>#include <stdlib.h>int main(){int input;char ch;while(scanf("%d",&input) != 1){while((ch = getchar()) != '\n')putchar(ch);printf(" is not an integer.\nPlease enter an");printf(" integer value, such an 23, -23, or 3:");}system("pause");return 0;}如果输入的第一个非int型字符,则字符保留在输入流中,然后由第二个while循环依次打印出输入字符到屏幕上。以上代码解决了scanf()输入类型不符的问题。
- scanf()函数的使用
- scanf函数的使用
- scanf 函数的使用
- scanf函数的基本使用
- scanf()的使用
- 使用scanf()函数应注意的问题??
- 使用scanf函数遇到的问题
- 02-scanf函数的基本使用
- C 【printf 和 scanf 函数的使用】
- c++ 中scanf函数的使用
- scanf()函数使用详解
- scanf()函数慎重使用
- scanf函数使用大全
- scanf函数使用
- 关于scanf()函数的细节
- scanf()函数的说明
- scanf函数的用法
- scanf函数的特点
- 想学习建个网站?WAMP Server助你在Windows上快速搭建PHP集成环境
- PHP数字数组倒排序
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 第16周项目3--填空学指针
- 深入了解Struts2返回JSON数据的原理及具体应用范例
- scanf()函数的使用
- 介绍 JSON
- 电池容量足够低如何触发自动关机(Riogrande platform&Qualcom platform)
- 怎样使用jstack诊断Java应用程序故障
- MyEclipse安装插件的几种方法
- RMAN 异机 复制数据库
- Linux常用命令大全
- 获取view的bitmap图层
- 2014年放假安排:除夕非法定假日