关于sscanf()返回值和识别问题

今天在写代码用到sscanf( )的时候发现了一个问题。

根据百科上的sscanf()用法:

给定一个字符串iios/[email protected]获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
1
2
sscanf("iios/[email protected]""%*[^/]/%[^@]", buf);
printf("%s\n", buf);

这个例子可以取 / 和 @ 之间的字符串,返回值为1.

但是! 如果/ 前面没有字符的话,取不到值! 返回值为0。也就是说,%*[^/] 无法过滤掉空值。

关于sscanf()返回值和识别问题

关于sscanf()返回值和识别问题


如上图所示,若 k 前面为空,则sscanf()无法取到字符串,返回值为0。