首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言 sscanf 提取指定字元後的字串範例

     編輯:C 語言問答

需求:從 init: STOREB Z cell 提取冒號後內容,跳過空白

格式字串技巧

%*[^:]   // 讀取並丟棄非冒號字元
:        // 匹配冒號
%s       // 讀取下一個非空白字串 (自動跳過空白)

完整程式碼

#include <stdio.h>

int main()
{
    char line[] = "init: STOREB Z cell";
    char token[80];

    // 提取冒號後第一個單字
    if (sscanf(line, "%*[^:]:%s", token) == 1)
        printf("第一欄: %s\n", token); // 輸出 STOREB

    // 提取冒號後完整剩餘字串 (含空白)
    char rest[200];
    if (sscanf(line, "%*[^:]:%[^\n]", rest) == 1)
        printf("剩餘: %s\n", rest); // 輸出 " STOREB Z cell"

    return 0;
}

關鍵點

  • %[^:] 掃描集:匹配非冒號字元。
  • * 抑制賦值:不佔用引數。
  • %s 自動跳過前導空白,遇空白停止;%[^\n] 讀取至行尾 (含空白)。
  • 若冒號可能不存在,建議先用 strchr 定位再處理,避免 sscanf 匹配失敗導致未初始化變數被使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved