C语言--之6--输入与输出--3.格式化输入(scanf)

具有变长参数表的函数 scanf 的声明形式如下:

int scanf(char *format, ...)

scanf 函数从标准输入中读取字符序列,按照 format 中的格式说明对字符序列进行解释,并把结果保存到其余的参数中:

  • 除了格式参数 format 之外的其它所有参数都必须是指针,用于指定经格式转换后的相应输入保存的位置。
  • 当 scanf 函数扫描完其格式串,或者碰到某些输入无法与格式控制说明匹配的情况时,该函数将终止,同时,成功匹配并赋值的输入项的个数将作为函数值返回,所以,该函数的返回值可以用来确定已匹配的输入项的个数。
  • 如果到达文件的结尾,该函数将返回 EOF。注意,返回 EOF 与 0 是不同的,0 表示下一个输入字符与格式串中的第一个格式说明不匹配。
  • 下一次调用 scanf 函数将从上一次转换的最后一个字符的下一个字符开始继续搜索。

格式串**(format)**通常都包含转换说明,用于控制输入的转换。格式串可能包含下列部分:

  • 空格或制表符,在处理过程中将被忽略。
  • 普通字符(不包括%),用于匹配输入流中下一个非空白符字符。
  • 转换说明,依次由一个 % 、一个 可选的赋值禁止字符* 、一个可选的数值(指定最大字段宽度)、一个可选的 h、l 或 L 字符(指定目标对象的宽度)以及一个转换字符组成。

转换说明控制下一个输入字段的转换。一般来说,转换结果存放在相应的参数指向的变量中。但是,如果转换说明中有赋值禁止字符 *,则跳过该输入字段,不进行赋值。输入字段定义为一个不包括空白符的字符串,其边界定义为到下一个空白符或达到指定的字段宽度。
这表明 scanf 函数将越过行边界读取输入,因为换行符也是空白符。(空白符包括空格符、横向制表符、换行符、回车符、纵向制表符以及换页符)。

转换字符指定对输入字段的解释。对应的参数必须是指针,这也是 C 语言通过值调用语义所要求的,下表列出了这些转换字符。
在这里插入图片描述
转换说明 d、i、o、u 及 x 的前面可以加上字符 hl

  • 前缀 h 表明参数表的相应参数是一个指向 short 类型而非 int 类型的指针。
  • 前缀 l 表明参数表的相应参数是一个指向 long 类型的指针。
  • 转换说明 e、f 和 g 的前面也可以加上前缀 l,它表明参数表的相应参数是一个指向 double 类型而非 float 类型的指针。

另外还有一个输入函数 sscanf,它用于从一个字符串(而不是标准输入)中读取字符序列:

int sscanf(char *string, char *format, arg1, arg2, ...)

它按照格式参数 format 中规定的格式扫描字符串 string,并把结果分别保存到 arg1、arg2、…这些参数中。这些参数必须是指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值