scanf()函数用法小结

article/2025/8/26 14:37:54

scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。

其调用格式为:      scanf("<格式化字符串>",<地址表>);

格式化字符串包括以下三类不同的字符;

1、 格式化说明符:

格式化说明符与printf()函数中的格式说明符基本相同。但和printf()函数中格式字符串的用法有一些小区别。我们来看下面这个表。

格式字符说明
%d  从键盘输入十进制整数
%o从键盘输入八进制整数
%x 从键盘输入十六进制整数
%c从键盘输入一个字符
%s从键盘输入一个字符串
%f 从键盘输入一个实数
%e与%f的作用相同

附加格式说明字符表    

字符 说明
L  输入"长"数据
输入"短"数据
M指定输入数据所占宽度
 空读一个数据

                                                        
 

2、   空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。

3、   非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

地址表是需要读入的所有变量的地址,而不是变量本身。这与printf()函数完全不同,要特别注意。各个变量的地址之间同","分开。

首先我们来看一下格式化说明符“%d”,从键盘输入一个十进制整数,当多个输入时,采用一个或多个空格做为分隔符,看下面的例子:

 

运行结果如下:

分析如下:

scanf格式化输入中有多个空格和’\n’,但是我们采用的是%d格式化输入,所以空格和’\n’等转义字符是没有读入的,这里有一个”%*3d”,意思是跳过输入的前三个整型数字,从第四个数字开始读入,所以我们输入“432432432”,输出的却是432432,而不是432432432.

有同学就要问了,为什么输入“432432432”后还有输入一个字母’d’呢?其实这个地方输入任何一个非空字节都是可以的。因为scanf必须从缓冲区读入一个非空字符再回车才会刷新缓冲区,这里scanf已经把“432432432”读入变量,缓冲区里就为空了,所以必须输入一个非空字节,这样按回车才会结束scanf输入。

好,下面我们来看”%c”,还是先写一个例子:

运行结果如下:

分析:

这里一目了然,采用“%c”输入时,scanf不仅会读入非空字符,遇到空字符他也会读入。

再看一个例子:

本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。这时候我们应该这样输入’a’空格’b’。

#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);}

分析:

这里一目了然,采用“%c”输入时,scanf不仅会读入非空字符,遇到空字符他也会读入。

下面看一下”%s”,遇到空格换行等转义字符不读入:

运行结果如下:

从运行结果可以看出,%s遇到空格 换行等转义字符不读入


http://chatgpt.dhexx.cn/article/MVi2NEee.shtml

相关文章

scanf用法简介

scanf是一个变参函数&#xff0c;参数的数量和类型是不确定的 scanf()是C语言中的一个输入函数。与printf函数一样&#xff0c;都被声明在头文件stdio.h里&#xff0c;因此在使用scanf函数时要加上#include <stdio.h>。 功能&#xff1a; 函数 scanf() 是从标准输入流s…

Navicat中将一个mysql数据库中的表复制到另一个数据库中

比如想要把本地的opera数据库中的表复制到云服务器中的mysql中&#xff0c;可以先在云服务器mysql中新建名为“opera”的数据库&#xff0c;再将本地的表复制进来 方式1&#xff1a; 点击“工具”-“数据传输” 刷新数据库&#xff0c;可以看到表复制进来了 方式2&#xff1a;…

mysql 数据表的复制

现在有两个数据库python01 、python02**目标&#xff1a;python01的student表复制到python02数据库下** 这是python01的数据结构与数据 有两种方法介绍给大家 第二种方法可推进你们使用&#xff1a; 方法一&#xff1a; create table student02 select * from python01.stud…

Mysql复制表中数据给另一张表

&#x1f4dc;个人简介 ⭐️个人主页&#xff1a;摸鱼の文酱博客主页&#x1f64b;‍♂️ &#x1f351;博客领域&#xff1a;java编程基础,mysql &#x1f345;写作风格&#xff1a;干货,干货,还是tmd的干货 &#x1f338;精选专栏&#xff1a;【Java】【mysql】 【算法刷题…

mysql如何复制一张表的数据到新的表

表test1 让表test1中id大于5的数据复制到表test2中 test2表无需新创建 CREATE TABLE test2 SELECT * FROM test1 where id >5让表test1中id大于5的数据复制到表test2中id CREATE TABLE test2 SELECT id FROM test1 where id >5一个新的表结构和字段取决去select 后给…

Mysql表和数据的复制操作

准备测试数据时候&#xff0c;需要经常对数据库中的表结构以及表中数据进行复制、删除等操作&#xff0c;现对常用的操作总结一下&#xff1a; 数据库中已经存在一个表A&#xff0c;表结构及数据如下&#xff1a; 1、创建新表B&#xff0c;从A表复制结构&#xff0c;不复制数…

MySQL复制表结构表数据

&#x1f388;准备工作 新建一张 student 表&#xff0c;建表语句如下&#xff1a; CREATE TABLE student (id int(20) NOT NULL,name varchar(30) COLLATE utf8_bin DEFAULT NULL,tid int(10) DEFAULT NULL,PRIMARY KEY (id),KEY fktid (tid),CONSTRAINT fktid FOREIGN KEY …

MySQL复制表

当我们要创建一张一模一样的表的时候我们不仅可以使用 show create table表名的方式查看建表源码的方式copy表我们还可以直接用代码copy&#xff0c;我总结了比较常用的三种copy表的方式 table_a表数据&#xff1a; 方式一&#xff1a; # 方式一 CREATE TABLE table_a_copy4 …

MySQL复制表3种方式

本节目标 1.掌握MySQL复制表的几种方式 复制表&#xff0c;即备份表&#xff0c;给我们在操作表的时候&#xff0c;留一条后路 复制表的三种方式&#xff1a; 1.只复制表结构 create table tableName like someTable; 2.只复制表数据 create table tableName select * from …

MySQL:如何复制表的部分或全部数据到其他表里?

文章目录 复制表分三种情况&#xff1a;1、复制原有表t_test的结构到另一张表t_testx(x1,2,......)&#xff0c;2、复制原有表t_test的数据到表t_testx(x1,2,......)&#xff0c;有两种情况&#xff0c;3、复制原有表t_test的结构及数据到另一张表t_testx(x1,2,......)&#xf…

mysql 复制表的几种方式

1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据) CREATE TABLE newadmin LIKE admin 2. 下面这个语句会拷贝数据到新表中。 注意&#xff1a;这个语句其实只是把select语句的结果建一个表。所以newadmin这个表不会有主键&#xff0c;索引。 CREATE TAB…

MySQL中复制表的方式你知道几种

mysql 想必大家比较熟悉了&#xff0c; 我们常见的crud sql 想必大家也是手到拈来。 但是我在今儿上数据库课的时候&#xff0c;我好像连mysql中复制表的基础写法 都不会。 可能工作中不常用&#xff0c;但作为基础 还是想写出来分享给大家。 这里 我介绍四种常用的复制表的方…

mysql复制表的几种方式

mysql复制表的几种方式 所描述的方法还请实际测试一下再使用. 1、复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来&#xff0c;当然我们可以用delete from newtable;来删除。 新表中没有了旧表的primary key、Ex…

无线WiFi怎样实现实名认证?

不管是企业内网的私有WiFi&#xff0c;还是公共WiFi网络&#xff1b;出于安全性需要以及相关政策法规的要求&#xff0c;都要对WiFi无线上网的用户进行实名认证。本文中&#xff0c;我将结合WSG上网行为管理网关介绍如何实现无线WiFi的实名认证。 1. 微信连WiFi 腾讯从2014年退…

无线技术—安全认证技术

1、为什么要保护WLAN网络&#xff1f; 1&#xff09;防止信息窃取&#xff1a; 通过软件侦听无线信息 通信内容反向解密 2&#xff09;防止未经过授权的访问&#xff1a; 非法用户接入 越权访问资源 3&#xff09;提供稳定高效的无线接入&#xff1a; 非法AP等信息干扰导致信号…

论校园网如何实现免认证

一般学校都有校园网&#xff08;尤其是大学&#xff09;:就是认证类的WiFi&#xff0c;没有密码就可以连接的那种&#xff0c;但是连上不能上网&#xff0c;需要账号密码认证。 一般都几个不同的校园网&#xff0c;这些校园网的来源一般都是学校安装的&#xff0c;或者校园网运…

WLAN认证技术

WLAN安全的发展历程 WLAN认证方式 开放系统认证 开放系统认证 Open system authentication 是缺省使用的认证机制&#xff0c;是最简单的认证算法&#xff0c;即不认证。 认证过程&#xff1a; 客户端发送一个认证请求给选定的AP 该AP发送一个认证成功响应报文给客户端确认该认…

校园网免认证登录连接

嫌校园卡套餐贵&#xff0c;就用GaoYun云&#xff0c;不需要认证登陆也可以使用校园网先用流量安装路线&#xff0c;连上校园网之后不要认证&#xff0c;连接软件。成功的话就是可以破解校园网。蓝奏云:https://wwa.lanzouy.com/iJvbP01erpng

wifi网络接入原理(中)——认证Authentication

转载请注明出处&#xff1a;http://blog.csdn.net/Righthek 谢谢&#xff01; 还是用手机来举例&#xff0c;扫描完成后&#xff0c;我们会选择想要加入的WIFI热点。此时&#xff0c;大部分都会弹出一个输入密码的窗口&#xff0c;当然也有不用输入密码的。这个过程叫做…

无线网络 EAP 认证

本文作者 98&#xff0c;擅长无线安全&#xff0c;过往文章&#xff1a;《wifi渗透-狸猫换太子》、《无线渗透--‘钓鱼’wifi》&#xff0c;完成 3 篇文章&#xff0c;欢迎加入我们的作者大军&#xff0c;争取为大家带来更多更好的关于无线攻防的文章。最后欢迎不同研究安全不同…