zoukankan      html  css  js  c++  java
  • scanf()正则表达式的使用

    []内是匹配的字符,^表示求反集,当遇到非集合内的字符时立即终止输入

    1. 输入指定范围的小写字母,遇到非法字符立即终止

    scanf("%[a-z]",str1);

    printf("%s\n",str1);

    输入:abc123

    输出:abc

    //输入带空格的自定范围的字符串

    scanf("%[a-z A-Z0-9]", str1);

    printf("%s\n",str1);

    输入:abc123 def 456

    输出:abc123

    scanf("%[a-z0-9]", str1);

    printf("%s\n",str1);

    输入:abc123

    输出:abc123

    2. 输入不包括指定字符的字符

    scanf("%[^a-z]", str1);

    printf("%s\n",str1);

    输入:123 456abc123

    输出:123 456

    注意:这种方式可以读入空格



    scanf("%[^\n]", str1);

    printf("%s\n",str1);

    //读入一整行字符串,包括空格

    输入:abc123 def

    输出:abc123 def


    scanf("%[^a-d0-9]", str1);

    printf("%s\n",str1);

    输入:efxy89

    输出:efxy

    我们来看看百分号表示什么意思:

    %表示选择,%后面的是条件,比如"%s",s是一个条件,表示任意字符,"%s"的意思是:只要输入的东西是一个字符,就把它拷贝给str。"%3s"又多了一个条件:只拷贝3个字符。 “%[a-z]”的条件稍微严格一些,输入的东西不但是字符,还得是一个小写字母的字符。

    %* 与%刚好相反,表示过滤满足条件的字符,也就是跳过满足条件的字符,其后一定要有新的%语句,否则无法读入

    3. 跳过指定范围的字符再读取指定范围的字符

    scanf("%*[a-z0-9]%[^\n]",str1);

    printf("%s\n",str1);

    输入:a1b2c3ABCdef 123

    输出:ABC

    4. %和%*组合使用可以提取指定字符串

    从<sip:tom@172.18.1.133>中提取tom

    const char* url = "<sip:tom@172.18.1.133>";

    char uri[10] = {0};

    sscanf(url,"%*[^:]:%[^@]", uri);

    printf("%s ",uri);

    从iios/12DDWDFF@122中提取12DDWDFF

    const char* s = "iios/12DDWDFF@122";

    char buf[20];

    sscanf(s, "%*[^/]/%[^@]", buf);

  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/orange1438/p/4544958.html
Copyright © 2011-2022 走看看