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,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。


网友评论