今天在写代码用到sscanf( )的时候发现了一个问题。
根据百科上的sscanf()用法:
给定一个字符串iios/12DDWDFF@122,
获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
1
2
|
sscanf
(
"iios/12DDWDFF@122"
,
"%*[^/]/%[^@]"
, buf);
printf
(
"%s\n"
, buf);
|
这个例子可以取 / 和 @ 之间的字符串,返回值为1.
但是! 如果/ 前面没有字符的话,取不到值! 返回值为0。也就是说,%*[^/] 无法过滤掉空值。
如上图所示,若 k 前面为空,则sscanf()无法取到字符串,返回值为0。