sscanf原型
int sscanf( string str, string fmt, mixed var1, mixed var2 ... );其中的format可以是一個或多個 {%[*] [width] [{h | l | I64 | L}]type | ' ' | ' ' | ' ' | 非%符號}
【解釋】這句話意思是指,除了%...type之外,還有三個可選的空白字符和非%符號,比如:
sscanf(str,"%d%ssscanf(str,"%d %s",..);sscanf(str,"%d
%s",...);sscanf(str,"%d,%s",...);//逗號隔開
1或2或3都可以任意重復(在這里將三個空白字符認為是一個類型)。
%*號*號表示(比如%*d和%*s表示跳過此數據不讀入)
char str[]="123apple";sscanf(str,"%*d%s",buf);printf("%s
",buf);//apple
特別地,可以忽略一個字符。比如有時讀取換行時還剩有一個' '
scanf("%[^
]%*c",...);%[]掃描字符集合
基本使用%[abc]:表示匹配括號中的任意字符,直到遇到非括號內字符為止。
char str[]="abcbc2600";sscanf(str,"%[abc]",buf);//abcbc
除了基本使用外,還支持范圍。
支持集合操作:%[a-z]:表示匹配a到z中任意字符(盡可能多的匹配)%[^a]:匹配非a的任意字符(前面的例子有使用,比如%[^ ],匹配直到遇到' '為止)
和*進行組合:%*[a-z]:匹配盡可能多的a-z范圍中的字符,并過濾掉。
char str[]="123456789apple";sscanf(str,"%*[0-5]%s",buf);printf("%s
",buf);//6789apple
一個綜合例子:
char str[]="123/bob@2600";sscanf(str,"%*[^/]/%[^@]",buf);//bob
|或運算
比如,匹配[a-c]或[0-5]中的任意字符
char str[]="abcbc2600";sscanf(str,"%[a-c|2-5]",buf);printf("%s
",buf);//abcbc2
可以看到|是作為模式來應用的,假如我們就需要通過|切分串怎么辦呢?
char buf[32];int n;char str[]="abc|2600";sscanf(str,"%[^\|]|%d",buf,&n);printf("%s,%d
",buf,n);//abc,2600結語
sscanf(scanf)的用法形式比較多,這里列舉了一部分常用的用法
本文發布于:2023-02-28 20:14:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167766518879707.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:scanf(scanf(\"%s\",a)和scanf(\"%s\",&a)).doc
本文 PDF 下載地址:scanf(scanf(\"%s\",a)和scanf(\"%s\",&a)).pdf
| 留言與評論(共有 0 條評論) |