1

我有一串长度不等的字符,类似于“ asdf + lghd + ewre + fdsf + ...”。由此,我还有一个用于 sscanf 函数的模板,类似于“%s + %s + %s + ...”。因为这两个都是不同的长度,是否可以用动态字符串数组替换 sscanf 中要存储值的那些附加参数?例如:

char *test = "adfe + asdf + fghe + jklo";
char *template = "%s + %s + %s + %s";
char destination[4][4];
sscanf(test, template, destination);

乍一看这似乎行不通,那么有没有其他方法可以做到这一点?

4

3 回答 3

0

你试图做的事情是不可能的sscanf。你将不得不循环它。

于 2012-04-10T00:38:38.833 回答
0

不,sscanf,就像“C”中的所有 xxxxxf 函数一样,通过在参数列表中具有可变数量的参数来工作。如果您要查找 4 个字符串 (4 %s),则该函数需要 4 个作为字符数组的参数。在您的示例中,您提供了一个由 4 个字符数组组成的数组的单个参数。

一种可行的方法是让您使用您正在使用的任何分隔符解析输入。查看函数 substr 和 pos 以获取有关如何执行此操作的一些提示。

于 2012-04-10T00:39:18.620 回答
0

sscanf()不支持这一点,但您可以编写自己的 scanf 版本。

我已经在 C# 中完成了这项工作,并在此处发布了代码。也许我的代码会给你一些用 C 编写自定义版本的想法。

于 2012-04-10T00:41:36.273 回答