[C/C++基礎]-sscanf貪婪/非貪婪 語法教學範例
[C/C++基礎]-sscanf貪婪/非貪婪 語法教學範例
線上編譯器: https://www.tutorialspoint.com/compile_c_online.php
Code:
#include <stdlib.h> #include <stdio.h> #include <string.h> /* 支援集合操作: %[a-z] 表示匹配a到z中任意字元,貪婪性(盡可能多的匹配) %[aB'] 匹配a、B、'中一員,貪婪性 %[^a] 匹配非a的任意字元,貪婪性 */ int main() { char Info[]="Dec 12/25 School ClassRoom123456789"; char Data1[16]; char Data2[16]; char Data3[50]; sscanf(Info, "%s%s%s", Data1, Data2,Data3);//scanf 預設空格切割 printf("Data1:%s Data2:%s Data3:%s\n", Data1, Data2, Data3); sscanf(Info, "%[^ ] %[^ ] %[^ ]", Data1, Data2,Data3);//正規空格切割 printf("Data1:%s Data2:%s Data3:%s\n", Data1, Data2, Data3); sscanf(Info, "%s%s %[a-z A-Z]", Data1, Data2,Data3);//正規空格+英文切割 printf("Data1:%s Data2:%s Data3:%s\n", Data1, Data2, Data3); sscanf(Info, "%s%s %[a-z A-Z 0-9]", Data1, Data2,Data3);//正規空格+[英文&數字]切割 printf("Data1:%s Data2:%s Data3:%s\n", Data1, Data2, Data3); } /* $gcc -o main *.c -lm $main Data1:Dec Data2:12/25 Data3:School Data1:Dec Data2:12/25 Data3:School Data1:Dec Data2:12/25 Data3:School ClassRoom Data1:Dec Data2:12/25 Data3:School ClassRoom123456789 */