乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C語言 sscanf用法詳解

       印度阿三17 2019-04-04
      /* sscanf用法詳解 */
      
      #include <stdio.h>   /* sscanf頭文件 */
      #include <stdlib.h>
      #include <string.h>
      
      /*
      sscanf 讀取格式化的字符串中的數據。
      swscanf 是 sscanf 的寬字符版本;swscanf 的參數是寬字符串。 swscanf不處理 Unicode 全角十六進制或"兼容性區(qū)"字符。 除此以外,swscanf 和 sscanf 的行為完全相同。
      
      函數語法
      int sscanf(const char *str, const char *format, ...);
      
      參數
      str
          輸入源固定字符串
      format
        格式化參數,format可以是一個或多個 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '/t' | '/n' | 非%符號}
        */
      
      void test()
      {
          /*
          //* 亦可用于格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此數據不讀入. (也就是不把此數據讀入參數中)
          const char *p1 = "abcd123";
          char buf1[32] = { 0 };
          sscanf(p1, "%*[a-z]%s", buf1); //跳過字母
          printf("-- buf1[%s]--\n", buf1);
      
          //[a|b|c]表示a,b,c中選一
          const char *p2 = "3b";
          char buf2_1[32] = { 0 };
          char buf2_2[32] = { 0 };
          sscanf(p2, "%[1|2|3]%c", buf2_1, buf2_2);  //或運算符使用
          printf("-- buf1[%s]--buf2_2[%s]---\n", buf2_1, buf2_2);
          
          //[d],表示可以有d也可以沒有d。
          const char *p3 = "b";
          char buf3_1[32] = { 0 };
          char buf3_2[32] = { 0 };
          sscanf(p3, "%[3]%c", buf3_1, buf3_2);  //無法提取任何數據
          printf("-- buf1[%s]--buf2_2[%s]---\n", buf3_1, buf3_2);
          
          //[d],表示可以有d也可以沒有d。
          const char *p4 = "b";
          char buf4_1[32] = { 0 };
          char buf4_2[32] = { 0 };
          sscanf(p4, "%c%[3]", buf4_1, buf4_2);  //可以正常提取b
          printf("-- buf1[%s]--buf2_2[%s]---\n", buf4_1, buf4_2);
          //結論:sscanf提取字符串必須知道字符串的具體格式,使用上不如正則靈活
          
          //width表示讀取寬度。
          const char *p5 = "abcdef123";
          char buf5_1[32] = { 0 };
          char buf5_2[32] = { 0 };
          sscanf(p5, "%3s%s", buf5_1, buf5_2);  //%3s 表示提取3個字符的字符串
          printf("-- buf1[%s]--buf2_2[%s]---\n", buf5_1, buf5_2);
          
          // h|I|I64 是配合%d提取整數使用 L 是配合%f提取浮點數使用,h表示short類型數據,I表示int類型數據,I64表示長整型數據
          const char *p6 = "123578abc";
          int buf6_1;
          char buf6_2[32] = { 0 };
          sscanf(p6, "%Id%s", &buf6_1, buf6_2);
          printf("-- buf1[%d]--buf2_2[%s]---\n", buf6_1, buf6_2);
          
          //控制字符
          //  %c 一個單一的字符
          //    %d 一個十進制整數
          //    %i 一個整數
          //    %e, %f, %g 一個浮點數
          //    %o 一個八進制數
          //    %s 一個字符串
          //    %x 一個十六進制數
          //    %p 一個指針
          //    %n 一個等于讀取字符數量的整數
          //    %u 一個無符號整數
          //    %[] 一個字符集
          //    %% 一個精度符號
          const char *p7 = "123578abc";
          char ch7 = 0;
          char buf7_2[32] = { 0 };
          sscanf(p7, "%c%s", &ch7, buf7_2);
          printf("-- buf1[%c]--buf2_2[%s]---\n", ch7, buf7_2);
          
          //sscanf函數遇到空格停止讀取字符串,所有需要特地注明空格
          const char *p8 = "123   578a  bc";
          char buf8_1[32] = { 0 };
          char buf8_2[32] = { 0 };
          sscanf(p8, "%s%*[ ]%s", buf8_1,buf8_2); //格式化里有空格,可以提取
          printf("-- buf1[%s]--buf2_2[%s]---\n", buf8_1, buf8_2);
          
          //^ 取到指定字符為止的字符串
          const char *p9 = "123abc";
          char buf9_1[32] = { 0 };
          char buf9_2[32] = { 0 };
          sscanf(p9, "%[^2]%s", buf9_1,buf9_2);
          printf("-- buf1[%s]--buf2_2[%s]---\n", buf9_1, buf9_2);
          
          //截取到指定字符串 "3ab"
          const char *p10 = "12-3ab-c";
          char buf10_1[32] = { 0 };
          char buf10_2[32] = { 0 };
          sscanf(p10, "%*[^-]-%[^-]%s", buf10_1, buf10_2); 
          printf("-- buf1[%s]--buf2_2[%s]---\n", buf10_1, buf10_2);
          */
      
          //%n的使用,返回前一個提取字符個數,一般
          const char *p11 = "12345dfg";
          int num = 0;
          sscanf(p11, "%*d%n%*s", &num);
          printf("-- buf1[%d]--buf2[%s]--\n", num, p11   num);//注意其用法,節(jié)省內存,通過偏移量展示字符串
      
      
      }
      
      int main()
      {
          test();
          printf("-----ok------\n");
          getchar();
          return 0;
      }

      ?

      來源:http://www./content-4-156251.html

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多