美文网首页
c++中sscanf函数与sprintf函数的用法

c++中sscanf函数与sprintf函数的用法

作者: 流年花影 | 来源:发表于2017-11-12 18:41 被阅读0次

    一.sscanf 读取格式化的字符串中的数据
    sscanf和scanf类似,都是用于输入的,只是后者以屏幕为输入源,而前者以固定字符串为输入。
    sscanf() 是从一个字符串中读进与指定格式相符的数据
    二.sprintf与printf的用法很类似,只不过是前者输出到指定的目标,后者输出到屏幕。
    sprintf()指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。
    int scanf(const char format [,agument])
    其中format可以是一个或多个
    {%[
    ][width][{h | l | l64 | L}]}type
    {a|b|c}表示a、b、c中选一,[d]表示d是可有可无的。
    所以,format形式可以有:
    %s
    %5s
    %[a-z]5d
    注意:
    %*[width][{h | l | l64 | L}]}type表示过滤满足条件的字符串,不向目标中输出。

    1、基本用法,取字符串
    string source0 = "1234456";
    char str[521];
    sscanf(source0.c_str(),"%s",str);
    sscanf(source0.c_str(),"%4s",str);

    2、转换为整型数
    string source0 = "123456";
    int x;
    sscanf(source0.c_str(),"%d",&x);
    sscanf(source0.c_str(),"%3d",&x);

    3、停止和范围
    sscanf(source0,"%[^a]",str); //遇到“a”停止
    sscanf(source0,"%[^c]",str); //遇到“c”停止
    sscanf(source0,"%[1-9A-Z]",str); //只取范围1-9和A-Z的字符
    sscanf(source0,"%[^b-z]",str); //遇到“b-z”停止
    sscanf(source0,"%[^c-z]",str); //遇到“c-z”停止

    4、格式转换
    char source[512] = "2015:8:1";
    int a,b,c;
    sscanf(source,"%d:%d:%d",&a,&b,&c);
    注意:这个地方a、b、c必须加引用,否则会报错。

    5、复杂情况
    char source[512] = "fjkdsjf/123456@fjkdsjf";
    char str[512];
    sscanf(source,"%*[/]/%[@]",str);
    结果为:123456

    sprintf
    sprintf与printf的用法很类似,只不过是前者输出到指定的目标,后者输出到屏幕。
    int sprintf(char *buffer,const char *format,...)
    举个例子:

    #include<iostream>
    #include<cstdio>
    using namespace std; 
    void test(int x)
    {
     char buf[20];
     sprintf(buf,"%d",x);
     cout << buf << endl;
    
     sprintf(buf,"buf = %d",x);
     cout << buf << endl;
    
     sprintf(buf,"buf = %08d",x);
     cout << buf << endl;
    }
    void test0()
    {
     test(1);
     test(2);
    }
    int main(){
        test0();
    }
    

    结果:
    1
    buf = 1
    buf = 00000001
    2
    buf = 2
    buf = 00000002

    相关文章

      网友评论

          本文标题:c++中sscanf函数与sprintf函数的用法

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