美文网首页
容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什

容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什

作者: 哪有岁月静好 | 来源:发表于2020-07-27 19:21 被阅读0次

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



相关文章

  • 容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什

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

  • scanf函数

    scanf函数 一、是什么? C语言下的scanf()函数是样式化输入函数,也称为阻塞式函数,有C语言自带的库提供...

  • 06-输入输出函数-指趣学院

    Go语言fmt包实现了类似C语言printf和scanf的格式化I/O, 格式化动作源自C语言但更简单 输出函数 ...

  • scanf函数学习

    scanf()函数是格式化读入屏幕的数据,该函数包含在头文件stdio.h中,一般形式为:scanf("格式控制字...

  • C语言——第一次笔记

    学习内容注释的使用#include的作用main函数介绍printf函数格式化输出C语言基本数据类型scanf函数...

  • fmt print

    格式化 Golang的fmt包中含有格式化I/O函数,类似于C语言中的printf和scanf。 函数描述fmt....

  • C语言学习04.格式化输入输出

    C语言的格式化输入输出靠的是printf和scanf函数,在stdio.h头文件。 格式化输出: Printf具有...

  • Week1

    周一笔记 printf函数 printf函数的格式 scanf函数 类型转换 C语言当中,大类型转换成小类型会丢失...

  • C语言格式输入函数scanf()详解

    scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。 scanf函数的一般形式 ...

  • 第3章 格式化输入和输出

    英文原版:P37 scanf函数和printf函数是C语言里使用频率最高的两个函数,支持格式化读和写。如本章所展示...

网友评论

      本文标题:容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什

      本文链接:https://www.haomeiwen.com/subject/xldtrktx.html