考虑只读入小写字母的字符串,这个问题要如何用scanf解决呢?

这就用到了%[] 这个格式控制符,它支持a-z这样的格式控制

char s[111];
scanf("%[a-z]", s);

之前总是写成%[a-z]s

当然这样会出现各种各样的问题,这里就不多说了。


废话少说,多举一些例子来学习%[] 这个格式控制符吧。

char s[111];
scanf("%[b-d0-9]", s);//只读 bcd和数字 的字符串

之前总是写成%[b-d|0-9]s 注意这里没有&|这样的运算。。。


有聪明的读者应该会问这样的话,想减号-怎么办呢?

char s[111];
scanf("%[-b-d0-9]", s);//只读 bcd和数字和减号- 的字符串,下同
scanf("%[b-d-0-9]", s);
scanf("%[b-d0-9-]", s);

这几个方法是一样的,注意其中减号的位置,原理是减号两边要同时有可见字符才可以被识别成区间,否则会被识别成减号。


有了只读入某些字符,那么读入除了某些字符的字符串要怎么办呢。

char s[111];
scanf("[^b-d0-9]", s);//不读入 bcd和数字 其他字符都读入

注意^一定要紧贴左括号,否则会被判断成^符号,这里^代表不读后面的字符。


于是可以有不读入^字符

char s[111];
scanf("%[^\n]", s);//不读入换号符,可以用这个来读一行字符,其中可以带空格
scanf("%[^^]", s);//不读入 ^字符

又有人会问 [ ] 要怎么去读入呢

其中[就当做普通字符就行了,但是]在想读入]时一定要紧贴左括号,和^一样,在不想读入时要紧贴[^,看下正确的示范。

char s[111];
scanf("%[]a-z]", s);//读入 ] 和 a-z
scanf("%[^]a-z]", s);//除了 ] 和 a-z 其他字符都读入

还有想读入和不想读入两个不能同时使用,原因自己根据上面的想想就知道了^v^。

由于笔者水平有限,若有错误,欢迎指出。

scanf格式控制符之%[]的应用的更多相关文章

  1. scanf格式控制符的完整格式

    scanf格式控制的完整格式: %     *     m     l或h     格式字符 ①格式字符与printf函数中的使用方式相同,以%d.%o.%x.%c.%s.%f.%e,无%u格式.%g ...

  2. scanf格式控制符

    格式控制 . %d %o %x %c %s %f %e 无%u格式.%g格式 . scanf("%3d%3d", &a, &b); 输入: //a=123,b=45 ...

  3. C语言的格式控制符

    1.         格式控制符 格式输出printf 作用是向终端输出若干个类型任意的数据. 格式:printf (格式控制符,输出列表) 1)         格式控制符 l          % ...

  4. C++流格式控制符的使用【来自网络】

    注意添加<iomanip>头文件. 使用控制符控制输出格式 控制符 作用 dec 设置整数的基数为10 hex 设置整数的基数为16 oct 设置整数的基数为8 setbase(n) 设置 ...

  5. [C] scanf - 格式输入函数

    scanf 函数称为格式输入函数,即把用户键盘输入的内容保存到指定的变量中. scanf 函数签名 scanf("格式控制字符串", 变量地址列表) scanf 函数是一个标准库函 ...

  6. Swift学习——格式控制符和元组流程控制(二)

    Swift中的格式控制符和元祖 (1)首先介绍一下元祖,元祖是关系型数据库中  比如学生表中的姓名,年龄,电话等 定义例如以下 var studentinfo = ("jhon", ...

  7. 文件重定向,getline()获取一样,屏幕输出流,格式控制符dec,oct,hex,精度控制setprecision(int num),设置填充,cout.width和file(字符),进制输入

     1.在window下的命令重定向输出到文件里 2.将内容输入到某个文件里的方式:命令<1.txt (使用1.txt中的命令) 3.读取文件里的名,然后将命令读取最后输出到文件里.命令< ...

  8. PHP时间格式控制符对照表

    format 字符 说明 返回值例子 日 --- --- d 月份中的第几天,有前导零的 2 位数字 01 到 31 j 月份中的第几天,没有前导零 1 到 31 S 每月天数后面的英文后缀,2 个字 ...

  9. C# ToString格式控制符

    C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 E 科学型 25000.ToString ...

随机推荐

  1. 配置Spring.NET

    先引入关键的程序集 Common.Logging.dll Spring.Core.dll 在配置文件配置中: <configSections> ...... <sectionGrou ...

  2. mybatis是如何防止sql注入?

    sql注入发生的时间,sql注入发生的阶段在sql预编译阶段,当编译完成的sql不会产生sql注入 采用jdbc操作数据时候 String sql = "update ft_proposal ...

  3. 关于html头部引用(meta,link)

    /*这一段头部表示 如果安装了GCF,则使用GCF来渲染页面,如果为安装GCF,则使用最高版本的IE内核进行渲染.*/<meta content="IE=edge,chrome=1&q ...

  4. IOS开发---菜鸟学习之路--(二十三)-直接利用键值对的方式来处理数据的感想

    首先声明,本文纯粹只是做为本人个人新手的理解.文中的想法我知道肯定有很多地方是错的. 但是这就是我作为一个新人的使用方法,对于大牛非常欢迎指导,对于喷子请绕道而行. 由于这是早上跟我学长讨论数据处理时 ...

  5. IOS开发学习笔记037-九宫格代码实现

    九宫格布局,用手机输入法时经常见到.先按3行3列写. 代码的实现主要是计算插入图片的位置. 每一张图片的位置和所在的行列密切相关.分析过程如下: 界面: 代码实现 1.把需要的图片资源添加进来 然后给 ...

  6. Android 使用剪贴板传递简单数据及复杂数据的方法

    传递数据的场景在于不同页面之间跳转,需要携带数据:简单数据值指的是String, int等数据, 复杂数据指的是类 1.   使用剪贴板传递简单数据方法: 第一个页面里面放数据操作如下: Clipbo ...

  7. WordCount by Java

    WordCount by Java 软测第二周作业 该项目github地址如下: https://github.com/YuQiao0303/WordCount 一.概述 项目WordCount的需求 ...

  8. C++指针详解 (转)

    C++指针详解 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区, ...

  9. 聊聊、Java 命令 第三篇

    这篇随笔主要写启动 jar 时,如果需要依赖其他的 jar 包该怎么处理,我会以 rabbitMQ 客服端启动为例. package com.rockcode.www.rabbitmq; import ...

  10. 课堂笔记II