zoukankan      html  css  js  c++  java
  • 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。 
      

  • 相关阅读:
    打印沙漏
    秋季学期学习总结
    反射
    线程(二)join、yeild、同步(synchronized:同步块,同步方法;,Lock)、非线程安全单例模式、线程安全单例模式、多线程售卖电影票处理、通过线程依次打印A、B、C、wait和sleep
    线程(一)
    红包计算的方法(通过2倍指数法进行计算,通过线性切割法计算)
    Math常用类、Date类、Calendar类、两者相互转换
    Java包(访问修饰符的范围)、String字符串、StringBuilder类、基本类型和引用类型
    编写一个系统(登录、注册、验证用户名密码和验证码、覆盖存储用户)
    递归的使用:调用方法自身
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/11935712.html
Copyright © 2011-2022 走看看