scanf()函数用法小结
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。
其调用格式为: scanf("<格式化字符串>",<地址表>);
格式化字符串包括以下三类不同的字符;
1、 格式化说明符:
格式化说明符与printf()函数中的格式说明符基本相同。但和printf()函数中格式字符串的用法有一些小区别。我们来看下面这个表。
格式字符 说明
%d 从键盘输入十进制整数
%o 从键盘输入八进制整数
%x 从键盘输入十六进制整数
%c 从键盘输入一个字符
%s 从键盘输入一个字符串
%f 从键盘输入一个实数
%e 与%f的作用相同
附加格式说明字符表
字符 说明
L 输入"长"数据
H 输入"短"数据
M 指定输入数据所占宽度
* 空读一个数据
2、 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。
3、 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
地址表是需要读入的所有变量的地址,而不是变量本身。这与printf()函数完全不同,要特别注意。各个变量的地址之间同","分开。
首先我们来看一下格式化说明符“%d”,从键盘输入一个十进制整数,当多个输入时,采用一个或多个空格做为分隔符,看下面的例子:

运行结果如下:

分析如下:
scanf格式化输入中有多个空格和’\n’,但是我们采用的是%d格式化输入,所以空格和’\n’等转义字符是没有读入的,这里有一个”%*3d”,意思是跳过输入的前三个整型数字,从第四个数字开始读入,所以我们输入“432432432”,输出的却是432432,而不是432432432.
有同学就要问了,为什么输入“432432432”后还有输入一个字母’d’呢?其实这个地方输入任何一个非空字节都是可以的。因为scanf必须从缓冲区读入一个非空字符再回车才会刷新缓冲区,这里scanf已经把“432432432”读入变量,缓冲区里就为空了,所以必须输入一个非空字节,这样按回车才会结束scanf输入。
好,下面我们来看”%c”,还是先写一个例子:

运行结果如下:

分析:
这里一目了然,采用“%c”输入时,scanf不仅会读入非空字符,遇到空字符他也会读入。
再看一个例子:
#include <stdio.h>
void main()
{
char a,b;
printf("input charactera,b\n");
scanf("%c %c",&a,&b);/*注意两个%c之间有个空格*/
printf("\n%c%c\n",a,b);
}
本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。这时候我们应该这样输入’a’空格’b’。
下面看一下”%s”,遇到空格换行等转义字符不读入,

分析:
这里一目了然,采用“%c”输入时,scanf不仅会读入非空字符,遇到空字符他也会读入。
再看一个例子:
#include <stdio.h>
void main()
{
char a,b;
printf("input charactera,b\n");
scanf("%c %c",&a,&b);/*注意两个%c之间有个空格*/
printf("\n%c%c\n",a,b);
}
本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。这时候我们应该这样输入’a’空格’b’。
下面看一下”%s”,遇到空格换行等转义字符不读入,

运行结果如下:

scanf()函数用法小结的更多相关文章
- scanf函数用法小记
By francis_hao Aug 26,2017 scanf – 输入格式转换 概述 #include <stdio.h>int scanf(const char *fo ...
- Python strip函数用法小结
声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处,位于 ...
- Java String.indexOf() 函数用法小结
1. indexOf的参数是 String, startIndex: Number; indexOf的返回值为int, 2. Function indexOf 包含如下几个格式:1). Strng. ...
- 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1> 简单介绍一下scanf函数 这是在 ...
- SQL中CONVERT()函数用法详解
SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...
- 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)
函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符 ...
- C语言中关于scanf函数的用法
scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化 ...
- bloginfo()用法小结|wordpress函数
bloginfo()显示关于您的wordpress站点的信息,主要是从您的用户配置文件和WordPress管理屏幕的一般设置中收集的信息.它可以在模板文件的任何地方使用.这总是将结果打印到浏览器.如果 ...
- fork()和vfork()的区别,signal函数用法,exec()系列函数的用法小结
一:fork()和vfork()的区别: fork()函数可以创建子进程,有两个返回值,即调用一次返回两个值,一个是父进程调用fork()后的返回值,该返回值是刚刚创建的子进程的ID;另一个是子 ...
随机推荐
- Gulp vs Grunt 前端构建工具对比
Gulp vs Grunt 前端工程的构建工具对比 1. Grunt -> Gulp 早些年提到构建工具,难免会让人联想到历史比较悠久的Make,Ant,以及后来为了更方便的构建结构类似的Jav ...
- robots.txt用法
主要作用是告诉蜘蛛爬虫该网站下哪些内容能抓取,哪些内容不能抓取.虽然可以没有robots.txt这个文件,默认就抓取该网站的所有文件,对搜索引擎爬虫没有任何的影响,但是如果你想控制蜘蛛的检索间隔,你就 ...
- malloc函数
C语言中,使用malloc函数向内存中动态申请空间. 函数的原型是extern void *malloc(unsigned int num_bytes); 可见,函数返回的是指针类型,参数是要申请的空 ...
- JNI 学习笔记
JNI是Java Native Interface的缩写,JNI是一种机制,有了它就可以在java程序中调用其他native代码,或者使native代码调用java层的代码.也 就是说,有了JNI我们 ...
- java之classpath到底是什么
如果你输入一个命令,比如java那么系统是如何找到这个命令的呢?按照顺序,系统先在当前目录搜索是否有java.exe, java.bat 等. 如果没有,就得到系统的PATH(不区分大小写)里面查找. ...
- SQLserver中的xp_cmdshell
shell是用户与操作系统对话的一个接口,通过shell告诉操作系统让系统执行我们的指令 xp_cmdshell在sqlserver中默认是关闭的存在安全隐患. --打开xp_cmdshell ;;R ...
- Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...
- python之域与属性
python, javascript中域与属性是二个不同的概念, 域就是变量, 而属性则是符合某些约束, 例如getter, setter...等的特殊"变量". python中使 ...
- 【quartz】 入门
把技术债务给还了,首先来一个最简单的demo: 2.x版比1.x有很多改进,1.x基于fw1.2: 2.x基于fw3.5以上:语法上有很大的不同,摒弃了很多1.x的很多东西: 直接以2.x来demo ...
- return的用法
1.一般的就是用在有返回值的方法中,用来返回方法指定类型的值,同时结束方法执行: 2.可以用在返回值为void的方法中,用来终止方法运行: