int sscanf (const char *str, const char *format, ...);
str
來源字串。
format
格式字串,如:%d
、%s
。
...
用來接%d
、%s
等的變數。
成功取得的結果數量。
stdio.h
format語法:%[*][width][modifiers]type
參數 | 說明 |
---|---|
% | 開始符號 |
* | 忽略不存入變數 |
width | 最大讀取長度 |
sscanf("123456", "%4s", buf1); //只取4個字元
sscanf("name:carlo", "%[^:]", buf2); //取到":"為止
sscanf("name:carlo", "%*[^:]:%s", buf3); //忽略":"之前的部分,並取":"之後的部分
sscanf("123abcDEF", "%[1-9a-z]", buf4); //只取數字和小寫字母
sscanf("2018-11-29 13:39:08.838", "%*[^ ] %d:%d:%d.%d", &hour, &min, &sec, &ms);
sscanf("2018-11-29 INFO @5830714026", "%s %*[^ ] %[^@]@%lld", date, tmp, &llNum);
//===== result =====//
buf1 = "1234"
buf2 = "name"
buf3 = "carlo"
buf4 = "123abc"
hour = 13, min = 39, sec = 8, ms = 838
date = "2018-11-29", tmp = "", llNum = 5830714026
char str[] = "pinA,pinB,pinC";
char *pinStr = str;
char pin[8] = {'\0'};
int len = 0;
for(pinStr; sscanf(pinStr, "%[^,],%n", pin, &len) == 1; pinStr += len)
printf("%s\n", pin); // %n為讀取了幾個字元
//===== result =====//
pinA
pinB
pinC