容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什么输入类型吗?

C语言其实功能很强大,有不少细节的功能很有用。今天分享下C语言输入函数scanf函数中 %[] 格式控制符号的作用。

C语言输入和输出函数使用格式占位符%作为格式控制,所谓的占位符就是在输入输出的内容中预留位置填充等待输入输出的内容,出现格式占位符%的地方表明有输入和输出。

常见的格式控制有:

%d 整数

%f 单精度浮点数

%lf 双精度浮点数

%c 字符

%p 指针值

%s 字符串

%u 无符号整数

%% 百分号

当然除了以上常用的,还有今天介绍的 %[]。

%[] 格式控制类型,本质上也是输入字符串,和%s相比,它可以根据条件扫描输入的字符集合,获得符合条件的子串。

根据特定的字符集合,从输入的字符序列匹配最长的字符串。从输入中获取匹配[]定义的字符集合的字符形成字符序列。

对于连接符号 - 处理是实现定义,当-字符出现在[]中间位置时,表示范围,有特殊意义。

[^] 是相反匹配,从输入中获取不在[]定义的字符集合中的字符。

备注:和正则表达式相似,可以直接在输入的时候处理字符串,匹配符合条件的子串。

例如:

// %[123] 表示只输入1 2 3三个字符集合的字符,其它字符不输入

scanf("%[123]", a);  // 输入:12b2c34d

printf("%s\n", a);   // 输出:12

// %[^123] 表示输入所有字符,除了1 2 3三个字符

scanf("%[^123]", a);  // 输入:a123bdk

printf("%s\n", a);   //  输出:a

// %[1-9] 只输入1到9 九个数字字符,其它字符不输入

scanf("%[1-9]", a);  // 输入:1234567890abc9

printf("%s\n", a);   // 输出:123456789

该功能可以很方便从输入的字符串中,直接提取符合条件的字符组成子串。例如:从输入的字符串中找到所有数字、或找到所有大写字母和小写字母等。这是十分方便的,不需要再调用其它库函数。

其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值