scanf()函数的用法
1 scanf()函数简介
scanf()函数的作用是从标准的输入流中读取数据,并将读取到的数据保存到指定的变量中。其格式为
int scanf( const char *format [, argument]... );
其中,参数format指定了读取数据的方式;argument是一个参数列表,其类型是变量的地址,scanf()函数读取到的数据就保存到这些变量中。scanf()函数的返回值是保存数据的参数的数量,即对参数列表argument中多少个参数进行了赋值。
2 format参数
format参数是一个字符串。该字符串包含了格式说明符、空白字符和其他字符。
2.1 格式说明符
格式说明符也就是format参数中的百分号%。当scanf()函数遇到其参数中的格式说明符时,就开始从数据流中读取数据,并将数据转化为格式说明符指定的格式,保存到参数列表中的相应参数中。例如
int i;scanf(“%d”, &i);
scanf()函数中的格式说明符%使得该函数开始读取输入数据流中的数据,并将该数据保存到参数i中。
2.2 空白字符
空白字符指的是空格符(‘ ‘)、tab符(‘\t’)和新行符(‘\n’)。
2.2.1 format格式与输入流匹配
当scanf()函数遇到空白字符时,该函数会读取输入数据流中连续的空白字符,但是不会存储这些字符,直到读取到输入数据流中非空白字符为止。例如
int i;char ch;scanf(“%d %c”, &i, &ch);
此时在控制台输入窗口中输入“123 a”。对于scanf()函数的format参数,首先第一个格式说明符%使得scanf()函数从数据流中读取“123”并且将其转换为整形保存到变量i中;之后对于format参数中的空格符,scanf()函数从输入数据流中读取连续的空白字符,但是并不将该字符保存到参数列表中的参数;最后第二个格式说明符%使得scanf()函数从数据流中读取“a”,并将其转换为字符类型保存到变量ch中。
2.2.2 format格式与输入流不匹配
(1)当format包含空白字符而输入流不包含时
当format包含空白字符而输入流数据中不包含空白字符时,即
scanf(“%d %c”, &i, &ch);
而此时在控制台输入窗口中输入“123a”,scanf()函数的format参数的第一个格式说明符%使得scanf()函数从数据流中读取数据,需要注意的时,虽然此时输入的数据中不包含空白字符,但是scanf()函数无法将其中的“a”转换为整形,因此第一个格式说明符%使得scanf()函数从数据流中读取的数据为“123”,转换为整形后保存到变量i中;之后,在format参数中是一个空白字符,在“2.2.1 format格式与输入流匹配”中提到,空白字符使得scanf()函数读取输入数据流中连续的空白字符,但是此时输入数据中不包含空白字符,因此format参数中的空白字符并没有起作用,即此时scanf()函数并没有读取输入数据流中的数据;最后,format参数的第二个格式说明符%使得scanf()函数从数据流中读取数据“a”,并将其转换为字符类型保存到ch中。此时,i的值是123,而ch的值是’a’。
(2)当format不包含空白字符而输入流包含时
当format包含不空白字符而输入流数据中包含空白字符时,即
scanf(“%d%c”, &i, &ch);
而此时在控制台输入窗口中输入“123 a”,scanf()函数的format参数的第一个格式说明符%使得scanf()函数从数据流中读取数据“123”,之后format参数的第二个格式说明符%使得scanf()函数从数据流中读取数据,需要注意的是,此时读取到的数据不是“a”而是空格符。因此,i的值是123,而ch的值是’ ’。
2.3 其他字符
format参数中的其他字符指的是除了空白字符和格式说明符之外的其他字符。format参数中的其他字符要与输入数据流中的字符匹配,例如
scanf(“%d,%c”, &i, &ch);
此时,在控制台输入窗口中输入“123,a”,才能保证i的值是123,ch的值是’a’。如果format参数中的其他字符与输入数据流中的字符不匹配,则scanf()函数停止读取数据。
如果在控制台中输入“123a”,此时i的值是123,而ch的值是调用scanf()函数之前的值。
3 星号符号
格式说明符%之后除了跟指定数据类型的字符之外,还可以跟星号*。例如
%*d
scanf()函数遇到该符号时,只是从数据流中读取数据,但是并不把读取到的数据存储到参数列表中的参数。例如
scanf("%*d %d%c", &i, &ch);
在控制台输入窗口中输入“123 456a”,此时,i的值是456,而ch的值是’a’。
scanf()函数的用法相关推荐
- C语言之 scanf() 函数的用法
C语言之 scanf() 函数的用法 输入一个正整数,对这个正整数中的各位进行比较,输出最大那个数 比如: 输入:123456789 输出:9 #include <stdio.h>int ...
- scanf函数的用法
1.scanf函数的原理 C语言并没有给定输入/输出关键字,其输入和输出都是通过标准函数库来实现的.C语言通过scanf 函数读取键盘输入,键盘输入又被称为标准输入.当scanf函数读取标准输入时,如 ...
- C语言scanf函数详细解释,[转载]C语言printf和scanf函数详细用法
Printf和Scan函数的使用方法 一 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出 信息.在编写程序时经常会用到此函数.printf()函数的调用格式为: prin ...
- scanf()函数的用法和实践
scanf()函数的用法和实践 摘要: 本文阐述了基于ANSI,Win 95,Win NT上的 C/C++语言中scanf()函数的用法,以及在实际使用中常见错误及对策. 关键词: scanf() 一 ...
- c语言程序输入与输出函数,C语言printf()和scanf()函数?其实就是输入输出
在解释这两个函数之前,为了方便大家更容易理解,我们先来讲讲下面的这幅图. 这个图中的例子其实很简单,我们就是把题目通过输入设备(例如键盘鼠标)传输到计算机中,然后让计算机进行运算得出结果,再然后把结果 ...
- scanf()函数详解
scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Dennis M.Ritchie的" ...
- C语言中fscanf()函数的用法介绍
C语言中fscanf()函数的用法介绍 fscan()函数的原型: int fscanf(FILE *stream,const char *format,[argument...]); fscanf函 ...
- [转载]scanf()函数释疑[作者]------knocker
一. 序言 scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Denni ...
- C语言--gets、puts、scanf、printf函数详细用法与区别(小白也能看懂,看不懂私信骂我)
目录 一.前言 二.函数 gets().scanf() 深度解析 (1)头文件 (2)scanf()函数 (3)gets()函数 重点:(4) gets(a); 与 scanf("%s&q ...
最新文章
- opt eclipse jre bin java_Linux下安装JDK和Eclipse的配置方法
- bzoj 2109 amp; 2535 空中管制 解读
- mysql 非交互查询 存入execl
- 家里wifi网速越来越慢_wifi太慢怎么办?简单的操作几步就能让网速飞快
- 【吉林】2021年下半年软考报考时间及通知
- 详述switch分支语句
- python获取pid并杀死_用python记录运行pid,并在需要时kill掉它们的实例
- JAVA的SSH框架登录注册
- SpringBoot2 整合OAuth2组件,模拟第三方授权访问
- 自定义加载等待框(MBProgressHUD)
- oracle秒级查询,oracle 中查询超过10秒以上的sql语句(性能优化)
- flash打开文件时缺少文字_FLash常见问题
- windows系统下Redis下载安装与配置(内附蓝奏云下载地址)
- 60个APP LOGO设计
- 常见神经系统疾病的临床诊断及处理原则题库【1】
- 企业微信可以自动上班打卡吗?
- 路由器/交换机flow 调试指令
- 测试液晶显示器的软件,tLCDtest(液晶屏幕测试软件)
- 解决办法:git错误 error: failed to push some refs to ‘https://github.com/...
- 上海市出租车预约叫车和投诉电话一览
热门文章
- PPT修改幻灯片大小
- python数据类型有序无序,python数据类型有序无序_python中的有序和无序类别变量...
- python爬取并分析淘宝商品信息
- python第六章答案_python第六章
- 金堂五月花计算机学校招聘,2019年成都市金堂五月花学校招生简介
- 金融计算机次方的计算,金融理财计算器使用方法CASIOFC100,200.pdf
- PHP实验报告 点餐系统,点餐系统软件工程实验报告.doc
- 超火的数码产品犀牛rhino模型素材网站合集看过来
- VDI序曲三 桌面虚拟化之远程桌面服务RDS
- RRT、RRT-connect、RRT*等算法、A*等等路径规划算法