我有一串字符,类似于“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);
从一眼看出这似乎不起作用,那么还有另一种方法吗?
答案 0 :(得分:0)
sscanf
无法实现您的目标。你必须循环它。
答案 1 :(得分:0)
没有。与'C'中的所有xxxxxf函数一样,sscanf通过在参数列表中具有可变数量的aruments来工作。如果你正在寻找4个字符串(4%s),该函数需要4个字符数组的参数。在您的示例中,您提供的是一个包含4个字符数组的数组。
可行的一种方法是使用您正在使用的任何分隔符解析输入。查看函数substr和pos,了解有关如何执行此操作的一些提示。
答案 2 :(得分:0)
sscanf()
不支持此功能,但您可以编写自己的scanf版本。
我已经在C#中完成了这项工作并发布了代码here。也许我的代码会给你一些在C语言中编写自定义版本的想法。