博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什么输入类型吗?
阅读量:3944 次
发布时间:2019-05-24

本文共 939 字,大约阅读时间需要 3 分钟。

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

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

常见的格式控制有:

%d 整数

%f 单精度浮点数

%lf 双精度浮点数

%c 字符

%p 指针值

%s 字符串

%u 无符号整数

%% 百分号

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

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

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

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

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

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

例如:

// %[123] 表示只输入1 2 3三个字符集合的字符,其它字符不输入scanf("%[123]", a);  // 输入:12b2c34dprintf("%s\n", a);   // 输出:12// %[^123] 表示输入所有字符,除了1 2 3三个字符scanf("%[^123]", a);  // 输入:a123bdkprintf("%s\n", a);   //  输出:a// %[1-9] 只输入1到9 九个数字字符,其它字符不输入scanf("%[1-9]", a);  // 输入:1234567890abc9printf("%s\n", a);   // 输出:123456789

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

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

转载地址:http://rbjwi.baihongyu.com/

你可能感兴趣的文章
using matlab drawing line graph for latex
查看>>
How package finding works
查看>>
build opencv3.3.0 with VTK8.0, CUDA9.0 on ubuntu9.0
查看>>
how to compile kinfu_remake with cuda 9.0 opencv2.4.13.4
查看>>
qtcreator4.4.1中cmake 与cmake3.5.1本身generate出来的setting是有区别的解决方法
查看>>
ubuntu下解决csdn网页打不开的问题
查看>>
MySQL server has gone away 问题的解决方法
查看>>
MySQL十大优化技巧
查看>>
PHP中文件读写操作
查看>>
php开发常识b_01
查看>>
PHP单例模式
查看>>
PHP项目设计
查看>>
memcache的安装及管理
查看>>
git 传输
查看>>
创建新项目
查看>>
印刷工艺- 喷墨印刷
查看>>
印刷工艺流程
查看>>
印刷业ERP启蒙
查看>>
Java8 Lambda表达式使用集合(笔记)
查看>>
Java魔法师Unsafe
查看>>