【发布时间】:2022-01-02 10:00:22
【问题描述】:
是否可以使用多个格式说明符运行sscanf,每个格式说明符将在数组中设置一个项目?目前,我必须分别指定指向每个数组槽的指针,感觉非常重复:
unsigned int buffer[8];
sscanf(
line,
"%6o %6o %6o %6o %6o %6o %6o %6o",
buffer + 0,
buffer + 1,
buffer + 2,
buffer + 3,
buffer + 4,
buffer + 5,
buffer + 6,
buffer + 7);
我正在寻找类似于 JavaScript 的 spread operator 或 Python 的 *-operator for unpacking argument lists 的东西:
sscanf(
line,
"%6o %6o %6o %6o %6o %6o %6o %6o",
...buffer);
目前,此操作失败并出现以下错误:
file.c:42:21: error: format ‘%o’ 需要一个匹配的 ‘unsigned int *’ 参数 [-Werror=format=]
这是意料之中的。如何告诉sscanf 将每个格式说明符值放入数组中的连续槽中?是否可以?如果没有,是否有聪明的解决方法(hack)?
【问题讨论】:
-
"如何告诉 sscanf 将每个格式说明符值放入数组中的连续槽中?有可能吗?"不,这是不可能的。
-
knittl,当文本输入为 negative 时会发生什么,例如
"-1 -2 -3 ..."。这是可以接受的还是错误的? -
@chux-ReinstateMonica 文件/字符串永远不会包含负数。如果是这样,我无法处理它。因此出错就可以了。