sscanf()程序示例

#include <iostream>
#include <cstdio>

using namespace std;

int main(int argc, char* argv[]){
    char str[10];
    char a = 'a';
    for (int i = 0; i < 10; i++) str[i] = a++;
    cout<<str;
    //把源字符串"123456"拷贝到str的前6个字符,并且把str的第7个字符设为null字符,也就是\0
    sscanf("123456", "%s", str);
    cout<<str<<endl;
    //只拷贝3个字符给str,然后把第4个字符设为null字符
    sscanf("123456", "%3s", str);
    cout<<str<<endl;
    //%表示选择,%后面的是条件表示从a到z的任意字符,贪婪匹配
    sscanf("asdfDsfd", "%[a-z]", str);
    cout<<str<<endl;
    //%表示选择,符号^表示逻辑非,贪婪匹配
    sscanf("ASdfAsfd", "%[^a-z]", str);
    cout<<str<<endl;
    //不匹配则不修改str,即不添加'\0'
    sscanf("asdfAsfd", "%[^a-z]", str);
    cout<<str<<endl;
    //
    char str2[10] = "adfsdfsf";
    sscanf("AAddaDd", "%[A-Z]%[a-z]", str, str2);
    cout << str << "-" << str2 << endl;
    //%*表示不将匹配结果读入参数,匹配但不保存,起过滤作用
    sscanf("AAddaDd", "%*[A-Z]%[a-z]", str, str2);
    cout << str << "-" << str2 << endl;

    sscanf("adf123413", "%*[^0-9]%[0-9]", str);
    cout << str;
    return 0;
}