printf(scanf)【详解归纳】

一、前言

头文件为<stdio.h>

int scanf( const char *format [,argument]... );

int printf( const char *format [, argument]... );

    在我们写代码的时候,以及刷oj的题的时候,会经常用到printf函数(从内存中打印信息到屏幕外),以及scanf函数(从键盘在输入信息到内存),那你有没有对这两则函数有更深刻的认识?下面将介绍它们的所以的“个性”。

二、输出函数(printf)

1.占位符

所谓占位符,是指在输出文本中指定占位符,这个位置可以由其它位置植入。如: printf("庄梦涵有%d个老师",1);,我们可以通过调整第二个参数来改变输出文本的,庄梦涵有老师的个数。其中printf函数,要想玩出花样,那是少不了对占位符的深刻理解的。

占位符一个字符统一为%,第二个字符为数据类型,如%zd - 打印操作符sizeof()返回的size_of的数据。

占位符与printf中的参数是一一对应的关系,如有n个占位符,则需要n+1个参数。

常见的占位符有:

%c - 打印字符 %s - 打印字符串  %p - 打印地址 %zd - 打印size_t类型  

%hu - 打印无符号短整型 %ho - 打印八进制短整型 %hx - 打印十六进制整型  %hd - 打印十进制短整型   

%u - 打印无符号整型 %o - 打印八进制整型  %x - 打印十六进制整型 %d - 打印十进制整型   

%lu - 打印无符号长短整型 %lo - 打印八进制长整型  %lx - 打印十六进制长整型  %ld - 打印十进制长整型   

%llu - 打印无符号长长短整型 %llo - 打印八进制长长整型  %llx - 打印十六进制长长整型  %lld - 打印十进制长长整型 

%f - 打印单精度浮点型   %lf - 打印双精度浮点型   %Lf - 打印长精度浮点型。

2.限定宽度

printf()允许限定占位符的最小宽度,格式为:%*d,: * 表示要限定占位符的最小宽度,我暂时把它作为未知数。可以直接在输出文本中更改,也可以如下操作(*的特殊用处):

如图可知,若123宽度小于指定的5,所以不够的用空格,若超出了限定的宽度,则按实际宽度处理。默认是右对齐的,如果想要左对齐,在%后面加一个 - 即可;注意,后面的参数请按顺序来。对于小数而言,宽度表示整个数据的宽度,小数默认是六位。

你看,包括小数点也算一个宽度。 

3.限定小数

浮点型类型的打印,都是默认小数的个数是6位,但是我们可以通过一些手段,对小数进行限定,其格式为%.*f,(.*)表示限定小数的格式,这里的*我暂时把它作为未知数(他也一样有特殊用处)。

4.总显示正负号,

默认情况,我们打印的数据,正数默认不带正号,若我们想要让打印的数据带上正负号,则可以%后面加上+号。

5.输出部分字符串

格式为 ( %,*s )

三、输入函数(scanf)

1.用法

用于读取用户的键盘(标准输入流)输入,程序运行到这个语句的时候,就会停下来,等待用户的输入,用户输完数据后,用户按下回车键,程序开始处理用户输入的数据。

博文开头就列举了这两个函数的声明,它俩的语法几乎差不多。

第一个参数,是格式字符串,里面放置占位符。其余参数,用于存放用户输入的变量

解读用户输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条的字符为止

注:

数据都是有类型,其类型与占位符一一对应,

占位符与参数是一一对应的。有n个占位符,(包括格式字符串)就有n+1个参数

唯一要注意的,后面的参数是地址(也就是变量前要加&符号),否则会出现程序出错(反正我刚敲代码的时候经常出错)。

读取的时候,自动过滤空白字符,包括(空格,制表符,换行符)

2.返回值

scanf的返回值是一个整数,表示成功读取的变量个数。

如果没有读取任何项或匹配失败,则,返回0,如果在成功读取任何数据之前遇到读取错误或遇到文件结束标志,则返回EOF(其值为-1);

3.两种占位符细节介绍

3.1 %c

我们都知道,像占位符%d,在读取用户输入数据的时候都会忽略起始的空白字符,但是%c不会,因为像空格啊(' '),制表符啊(\t),换行符啊(\n),都算作字符也就与%c匹配。我们若想忽略起始的空白字符可以这样写

             char c = 0;scanf(" %c",&c);  就是在占位符%c前面加上空格。

3.2 %s

scanf读取%s的时候,并不是简单的读取字符串,而是以非空白字符开始读取,到第一个空白字符停止,并在其末尾补上'\0',所以我们不能得到含有空白字符的字符串。

4.赋值忽略符(*)

只要将(*)加在任意占位符中%的后面,该占位符就不会返回值,解析和就被丢弃。

若:scanf("%d-%c", &a, &c); 则:输出的时候必须按照格式。

此时第一次读取时%d与12相对应,而第二次读取时 - 与空格匹配失败,返回值为1。

但是如果我们可以用忽略赋值符(*)其用法如下:从中我们还可以看出,明明读取的是4个字符,但返回值却是2,所以其返回值也不包括其中,

  • 37
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值