首页 > 解决方案 > sscanf 的格式说明符:%{format%}

问题描述

我只在标题中看到了几个对格式的引用,没有很好的例子。我看到的定义是这样的:

%{format%} 尽可能多地重复匹配格式说明符格式,并给出一个带有结果的数组数组。

有没有人有一个很好的例子来说明如何使用它?你需要传递什么来接收结果?

标签: cscanf

解决方案


您似乎从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),因此它与格式完美匹配。然后它将这些值分配给相应的变量。

请注意方法的返回值如何在成功时返回参数列表中成功填充的项目数。


推荐阅读