• sscanf,sprintf(思修课的收获)


      转载的,就是做个笔记

     sprintf函数原型为 int sprintf(char *str, const char *format, ...)。作用是格式化字符串,具体功能如下所示:

    (1)将数字变量转换为字符串。

    (2)得到整型变量的16进制和8进制字符串。

    (3)连接多个字符串。

    char str[256] = { 0 };
        int data = 1024;
        //将data转换为字符串
        sprintf(str,"%d",data);
        //获取data的十六进制
        sprintf(str,"0x%X",data);
        //获取data的八进制
        sprintf(str,"0%o",data);
        const char *s1 = "Hello";
        const char *s2 = "World";
        //连接字符串s1和s2
        sprintf(str,"%s %s",s1,s2);


    sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。 
     
      注: 
      1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中) 
      2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。 
      3、width表示读取宽度。 
      4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。 
      5、type :这就很多了,就是%s,%d之类。 
      6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值 
      支持集合操作: 
      %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配) 
      %[aB'] 匹配a、B、'中一员,贪婪性 
      %[^a] 匹配非a的任意字符,贪婪性

        sscanf常见用法。 
      char buf[512] = ; 
      1.sscanf("123456 ", "%s", buf); 
      printf("%s ", buf); 
      结果为:123456 
      2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。 
      sscanf("123456 ", "%4s", buf); 
      printf("%s ", buf); 
      结果为:1234 
      3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。 
      sscanf("123456 abcdedf", "%[^ ]", buf); 
      printf("%s ", buf); 
      结果为:123456 
      4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。 
      sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf); 
      printf("%s ", buf); 
      结果为:123456abcdedf 
      5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。 
      sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf); 
      printf("%s ", buf); 
      结果为:123456abcdedf 
      6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中 
      sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf); 
      printf("%s ", buf); 
      结果为:12DDWDFF 
      7、给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格) 
      sscanf(“hello, world”, "%*s%s", buf); 
      printf("%s ", buf); 
      结果为:world 
      %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了 
      如果没有空格则结果为NULL。 
      

  • 相关阅读:
    python中关于with以及contextlib的使用
    Python之Redis操作
    Python操作memecache
    COM组件技术名称解释
    C++11-新增正则表达式
    BSTR与char*、cstring、CComBSTR的转换
    ATL字符宏使用以及代码测试
    获取与一个磁盘的组织以及剩余空间容量有关的信息以及代码测试
    关于cstring ->string-> const char * 用U2A一步转换 错误的内存问题
    cstring、string、wstring、int、char*、tchar、 int、dword等相互转换代码输出测试
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/11935712.html
Copyright © 2020-2023  润新知