格式化输入函数scanf( )

scanf( )功能:

按照指定的格式读入键盘上输入的若干个任意类型的数据,存入到argument参数所指向的内存单元,函数返回值为读入并赋给argument的数据个数,出错则返回0。

scanf( )使用形式:

scanf("格式字符串",输入项首地址列表);
scanf( )函数执行时将输入的数据流按指定格式转换为数据,存入相应的存储单元中。

格式字符串:

%[*][width][F|N|h|l]type

(1)类型字符type:

类型字符 功能说明
d或i 以十进制有符号形式输入整数
u 以十进制无符号形式输入整数
o 以八进制无符号形式输入整数
x或X 以十六进制形式输入整数
f 以小数形式输入实数
c 输入单个字符
s 输入一个字符串
e或E,g或G 与f作用相同,e,g可替换f

(2)宽度指示符width:
width是一个十进制正整数的形式,表示该输入项最多可接收的字符个数。也就是说,读取输入数据中相应的n位,按需要的位数赋给相应的变量,多余部分被舍弃。但读取过程中如遇到空格、Tab或其他不可转换的字符,输入个数可少于宽度指示。

(3)赋值抑制字符"*":
表示本输入项对应的数据读入后,不赋给相应的变量,该变量的数据将由下一个格式指示符指定的数据输入。

scanf( )函数的数据输入操作:

(1)输入多个数据的分隔处理:如果在格式字符串中不包含除了格式指示符之外的普通字符,则在输入多个数据时,可以使用空格隔开,或者用Tab键分开,或者以回车键隔开。
(2)当“格式字符串”中出现普通字符时,普通字符不会显示,必须在规定输入时原样输入。
(3)当scanf( )函数中的格式字符串中出现转义字符(如"\n"),系统并不把它当转义字符解释,从而产生一个控制操作,而是将其视为普通字符,所以也要原样输入。
(4)输入数据时,遇到以下情况,系统认为该数据输入结束:

  • 遇到空格、回车键或者Tab键。
  • 遇到输入域宽度结束。
  • 遇到非法输入。例如在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0~9、小数点和正负号构成)。

(5)使用格式说明符"%c"输入单个字符时,空格和转义字符均作为有效字符被输入。

单个字符的输入函数getchar( )

getchar( )功能:

从标准输入设备(键盘)输入一个字符,并返回输入字符的ASCII值。

注意:

  • getchar( )只能用于单个字符的输入,一次只能输入一个字符。
  • 使用getchar( )输入字符是,需按下回车键表示输入结束。
  • getchar( )将回车也作为一个输入,所以输入连续的两个数据时需要注意。
  • 如果只是想输入一个字符并输出,也可以使用在putchar( )函数中嵌入getchar( )函数的形式。putchar(getchar( ));

【C语言】-数据输入-scanf( )和getchar( )的更多相关文章

  1. C语言数据输入与输出

    1 概论 C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数,浮点数,字符和字符串等等.数据输入的来源可以是文件,控制台以及 ...

  2. 关于C语言的输入-scanf、gets、getchar、getch、getline

    找工作刷题,重拾C语言,发现对键盘输入掌握很生疏,现总结各类输入函数使用方法和注意事项如下. 1.scanf("格式说明",变量地址列表) scanf("%s" ...

  3. 关于scanf、getchar、getch、getche缓冲区分析——C语言

    缓冲区 根据数据刷新的时机可以将缓冲区的类型分为:全缓冲.行缓冲.无缓冲 (注意:Windows下的输出设备没有缓冲区,意思是printf是无缓冲的,但是在Linux下printf就是行缓冲的,至于为 ...

  4. C语言初步学习I/O函数scanf、getchar、printf和putchar

    scanf().printf().getchar()和putchar()这四个函数能够让用户和程序交流,所以被称为输入/输出函数,或简称为I/O函数. 这里先结合缓冲输入来讲讲scanf()和getc ...

  5. C语言tips_2 关于scanf 读取规则小结以及与getchar 的区别

    第一点:scanf默认回车和空格是输入不同组之间的间隔和结束符号. 也就是说他不会读取 空格 和 换行符.而是把他们当作一个 数据被读取完成的标志!他的停止标志则为,当%d之类的数据输入结束之后,自动 ...

  6. R语言的数据输入

    既然了解了R语言的基本数据类型,那么如何将庞大的数据送入R语言进行处理呢?送入的数据又是如何在R语言中进行存储的呢?处理这些数据的方法又有那些呢?下面我们一起来探讨一下. 首先,数据输入最直接最直观的 ...

  7. R语言入门视频笔记--4--R的数据输入

    输入 R的数据输入可以大体三种: 1.键盘输出 2.从文本文件导入 3.从Excel中导入数据 一.从键盘输入 首先创建一个数据框,玩玩嘛,瞎建一个 mydata <- data.frame(a ...

  8. C语言清空输入缓冲区的N种方法对比

    转自C语言清空输入缓冲区的N种方法对比 C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int get ...

  9. 基础 - 字符读取函数scanf、getchar、gets、cin(清空缓存区解决单字符回车问题)

    0x01 scanf.getchar.cin读取单字符: 如下: //scanf读取字符 回车问题 void Sub_1_1() { char v1,v2; scanf("%c", ...

随机推荐

  1. codeforces #309 div1 D

    求最小值最大显然是要二分 二分之后转换成了判定性问题 我们考虑哪些点一定不能选 显然是将所有可选点选中之后依然不满足条件的点不能选 那么我们不妨维护一个堆,每次取出堆顶看看是否满足条件 不满足条件就p ...

  2. 并发下常见的加锁及锁的PHP具体实现

    http://www.cnblogs.com/scotoma/archive/2010/09/26/1836312.html Apache + PHP 的并发访问 http://www.cnblogs ...

  3. python学习笔记七--数据操作符

    一.Python表达式操作符及程序:

  4. VMware Workstation与Hyper-V不兼容。请先从系统中移除Hyper-V角色,然后再运行VMware Workstation。

    VMware Workstation与Hyper-V不兼容.请先从系统中移除Hyper-V角色,然后再运行VMware Workstation. 今天在用win8.1的时候发现了这个问题,解决办法如下 ...

  5. javascript里的post和get有什么区别

    FORM中的get post方法区别Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法.二者主要区别如下: 1.Get是用来从服务器上获得数据,而Post ...

  6. poj 1260 Pearls(dp)

    题目:http://poj.org/problem?id=1260 题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠. 珍珠的替代必须是连续的,不能跳跃 ...

  7. 十个免费的Web压力测试工具

    两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ...

  8. Hibernate事务与并发问题处理(乐观锁与悲观锁)

    目录 一.数据库事务的定义 二.数据库事务并发可能带来的问题 三.数据库事务隔离级别 四.使用Hibernate设置数据库隔离级别 五.使用悲观锁解决事务并发问题 六.使用乐观锁解决事务并发问题 Hi ...

  9. apache开源项目--Mavibot

    Mavibot™ 是个Java 的多版本并发控制 BTree,是 JDBM(当前 Apache Directory 服务器的后端)的替代品, 但是有着更强的功能,能适应任意需要实现 Java MVCC ...

  10. 装饰器模式(Decorator)

    转自http://blog.csdn.net/hust_is_lcd/article/details/7884320 1.认识装饰器模式 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象 ...