sscanf
支持使用 %n
来计算读取了多少个字节。
为什么有时候 sscanf
会读取额外的字节?
#include <stdio.h>
int main()
{
char *data = "X\n \n\x09\n \x10\n";
int len = 0;
sscanf(data, "X%n", &len);
printf("%i\n", len);
sscanf(data, "X\n%n", &len);
printf("%i\n", len);
return 0;
}
这个程序会输出:
1
7
我希望:
1
2
(X
代表1,X\n
代表2.)
为什么读取的字节数比预期的多?
scanf
函数系列来说,所有的空白字符都是相等的。在scanf
的格式字符串中放置一个空格将导致它跳过所有连续的空格。 - Some programmer dude"%[....]"
内部的空格。 - chux - Reinstate Monica