c - sscanf 的格式说明符:%{format%}
问题描述
我只在标题中看到了几个对格式的引用,没有很好的例子。我看到的定义是这样的:
%{format%}
尽可能多地重复匹配格式说明符格式,并给出一个带有结果的数组数组。
有没有人有一个很好的例子来说明如何使用它?你需要传递什么来接收结果?
解决方案
您似乎从docs.roxen/pike得到了这句话,这不是标准的 C。
Pike是一种面向对象的编程语言,其语法类似于Java 和C。不是C!
为了了解sscanf()
,你应该检查参考,其中提到:
format
: 包含格式字符串的 C 字符串,该格式字符串遵循与 scanf 中的格式相同的规范(有关详细信息,请参阅 scanf)。
并且还提供了一个例子。另一个例子是:
#include <stdio.h>
int main () {
int day, year;
char month[10], date[15] = "29 May 1453";
int items_read = sscanf(date, "%d %s %d", &day, month, &year);
printf("Constantinople fell in %d %s %d. sscanf() Read %d items.\n", day, month, year, items_read);
return 0;
}
输出:
Constantinople fell in 29 May 1453. sscanf() Read 3 items.
这里sscanf()
期望date
作为源,并将格式与它后面的参数匹配。它将尝试将字符串匹配date
到一个整数,后跟一个空格、一个字符串、一个空格和一个整数。
如您所见,date
有一个整数(29),然后是一个空格,然后是一个字符串(“May”),然后是一个空格,然后是一个整数(1453),因此它与格式完美匹配。然后它将这些值分配给相应的变量。
请注意方法的返回值如何在成功时返回参数列表中成功填充的项目数。
推荐阅读
- html - 鼠标悬停会使顶部栏中的文本和图标从网站上消失
- npm - npm WARN eslint-plugin-vue@6.2.2 需要 eslint@^5.0.0 的 peer || ^6.0.0 但未安装
- android - Firestore 规则 - 查询文档字段而不暴露整个集合
- c# - 将对象移动到其面对的方向给定的距离c#
- python-sphinx - 从标签和参考自动生成索引
- php - 如何在 WooCommerce 管理订单列表中的新列中添加“Local Pickup Plus 取货日期”
- docker - Drone - 使用drone.yml 使用自定义日期时间字符串格式命名 docker 图像标签
- java - Serenity 测试未使用 Serenity Parameterized Runner 运行
- java - 启动/停止服务后 Activity 中的本机崩溃
- excel - 传递给 Excel 的用于过滤的日期变量未正确激活