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()函数用法小结的更多相关文章

  1. scanf函数用法小记

    By francis_hao    Aug 26,2017   scanf – 输入格式转换   概述 #include <stdio.h>int scanf(const char *fo ...

  2. Python strip函数用法小结

    声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm)       删除s字符串中开头处,位于 ...

  3. Java String.indexOf() 函数用法小结

    1. indexOf的参数是 String,  startIndex: Number; indexOf的返回值为int, 2. Function indexOf 包含如下几个格式:1). Strng. ...

  4. 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1>  简单介绍一下scanf函数   这是在 ...

  5. SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...

  6. 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)

    函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符 ...

  7. C语言中关于scanf函数的用法

    scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化 ...

  8. bloginfo()用法小结|wordpress函数

    bloginfo()显示关于您的wordpress站点的信息,主要是从您的用户配置文件和WordPress管理屏幕的一般设置中收集的信息.它可以在模板文件的任何地方使用.这总是将结果打印到浏览器.如果 ...

  9. fork()和vfork()的区别,signal函数用法,exec()系列函数的用法小结

    一:fork()和vfork()的区别:    fork()函数可以创建子进程,有两个返回值,即调用一次返回两个值,一个是父进程调用fork()后的返回值,该返回值是刚刚创建的子进程的ID;另一个是子 ...

随机推荐

  1. 读取iis日志到sql server

    using Fasterflect; using System; using System.Collections.Generic; using System.Data.SqlClient; usin ...

  2. WordPress 主题开发 - (二) 理解主题 待翻译

    What is “Theme Sense”? What is “Theme Sense”? Theme Sense is an intuitive understanding of WordPress ...

  3. 配置Windows 2008 R2 64位 Odoo 8.0/9.0 源码开发调试环境

    安装过程中,需要互联网连接下载python依赖库: 1.安装: Windows Server 2008 R2 x64标准版 2.安装: Python 2.7.10 amd64 到C:\Python27 ...

  4. fast_recovery_area无剩余空间(ORA-19815)

    一.问题现象 --执行日志切换时,夯住 SQL ('/u01/oradata/oracle/redo04.log') size 50m; SQL> alter system switch log ...

  5. 系统中使用frameset和Iframe刷新页面session失效

    问题:Asp.net中每次刷新页面,session中保存的只就丢失 原因: 1.有些杀毒软件会去扫描web.config文件 2.程序内部有让session丢失的代码,或服务器内存不足 3.程序有框架 ...

  6. 【python】 入门 搭建环境

    1.去官网下载包 基本程序编译器 python-2.7.10.msi 集成开发环境 pycharm-community-4.5.2.exe 包管理工具 pip-7.0.3.tar.gz 2.安装 按顺 ...

  7. c++各种排序

    1.插入排序 void InsertSort(int a[], int n) { int temp, i, j; ; i < n; i++) { ]) { temp = a[i]; ; j &g ...

  8. DB天气app冲刺二阶段第六天

    今天干了一件让我有点小激动的事情 就是我感觉我貌似找到了为什么我的项目会闪退了有的时候..但是还不确定.等会会再试试看看到底对不对.好吧其实今天就干了这些事整整一下午调试,找bug,决定从头开始一点一 ...

  9. C语言基础:指针类型与指针和数组、字符串的关系

    //指针变量就是用来存储地址的,只能存储地址 格式:  int  *p;  这个p为指针变量:指针变量占8个字节 类型是用来说明这个指针指向的类型: 比如上边的int代表这个指针变量会指向int类型的 ...

  10. 活动 Activity 四种加载模式

    singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例.(注意是栈顶,不在栈顶照样创建新实例!) singleTas ...