我想使用sscanf的宽度选项(http://en.cppreference.com/w/c/io/fscanf)来控制要读取的最大字节数。但以下读取超过3个字节。
#include <stdio.h>
int main() {
long long ll;
char str[4];
int pos;
sscanf(" 281", "%3llx%n", &ll, &pos);
printf("%llx %d\n", ll, pos);
sscanf(" 281", "%3s%n", &str, &pos);
printf("%s %d\n", str, pos);
return 0;
}
打印出以下内容。
281 4
281 4
我原以为打印
28 3
28 3
这是正确使用sscanf吗? fscanf以类似的方式工作。
答案 0 :(得分:3)
某些(大多数)格式隐式跳过空格(基本上除了%c
和%[
之外的所有内容)。跳过的空白不计入最大字段宽度。