c - sscanf 的宽度选项不起作用

标签 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 的工作方式类似。

最佳答案

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

关于c - sscanf 的宽度选项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46751986/

相关文章:

c - 链接列表出现问题 - 为什么新元素没有添加到我的列表中?

c - 如何在 Main() 之前创建数组/结构并在 C 中对其进行初始化

c++ - 哪些文件包含 malloc() 和 new() 的实现?

c - scanf 不会让我离开循环 — 知道为什么以及如何解决它吗?

c - Scanf运行时错误,必须ctrl-alt-delete

c - C 接收用户输入并将其存储在数组中

c - ^ 和 ! 的意义C语言中的运算符

c - scanf 如何处理字符串和整数? C

c - 与 scanf() 或 sscanf() 一起使用的正则表达式

c - 一个非常简单的程序在两个方面都失败了