sscanf的width选项不起作用

时间:2017-10-15 05:23:26

标签: c scanf

我想使用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以类似的方式工作。

1 个答案:

答案 0 :(得分:3)

某些(大多数)格式隐式跳过空格(基本上除了%c%[之外的所有内容)。跳过的空白不计入最大字段宽度。