C 语言中的 sscanf 详解

一、函数介绍

函数原型int sscanf(const char *str, const char *format, ...);

返 回 值:成功返回匹配成功的模式个数,失败返回 -1。

RETURN VALUE

  • These functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure.这些函数返回成功匹配和赋值的输入项的数目,这个数目可能比提供的要少,或者在早期匹配失败的情况下甚至为零。

  • The value EOF is returned if the end of input is reached before either the first successful conver‐sion or a matching failure occurs.如果在第一次成功转换或匹配失败之前到达输入结束,则返回 EOF 值。

举 例

iRet = sscanf("123ab", "%[0-9]%[a-z]", sz1, sz2); // iRet = 2, sz1 = "123", sz2 = "ab"
iRet = sscanf("123ab", "%[0-9]%[A-Z]", sz1, sz2); // iRet = 1, sz1 = "123"
iRet = sscanf("123ab", "%[a-z]%[a-z]", sz1, sz2); // iRet = 0
iRet = sscanf("", "%[a-z]", sz1); 			 	  // iRet = -1

二、sscanf函数和正则表达式

以下内容摘抄自:sscanf函数和正则表达式 - km的小天地 - ITeye博客

备注:实验五有所纠正。

此文所有的实验都是基于下面的程序:

char str[10] = "!!!!!!!!!!"; // 10 个感叹号

我们把 str 的每个字符都初始化为感叹号,当 str 的值发生变化时,使用 printf 打印 str 的值,对比先前的感叹号,这样就可以方便的观察 str 发生了怎样的变化。

下面我们做几个小实验,看看使用 sscanf 和正则表达式格式化输入后,str 有什么变化。

实验一

(void)sscanf("123456", "%s", str);			// str 的值变为 "123456\0!!!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值