【发布时间】:2020-11-23 15:51:55
【问题描述】:
给定一个格式字符串,一个用于说明符数量的计数器变量和一个要输入的字符串数组,如何打印?
这是一个例子:
char *format_str = "str(%s)ing(%s)";
int count = 2;
char **specs = { [0] = "rts", [1] = "gni" };
因此,字符串列表分别与说明符的顺序对齐。打印后,最终结果将是:
"str(rts)ing(gni)"
是否可以编写一个函数来打印具有任何格式字符串、任意数量的说明符和相应参数的字符串?我曾尝试使用strtok()、vsprintf、snprintf 等来做到这一点,但我仍然无法完全正确。
编辑:澄清一下,format_str 包含 count 数量的说明符,数组 specs 包含 count 字符串数量。因此,建议的函数应将count 的字符串数打印到format_str。
【问题讨论】:
-
with any format string & any number of specifiers & respective arguments?我不明白。 “任何”是什么意思?不,%s需要char *,它不能采用其他类型。你能提供更多的例子吗?你能提供你尝试过的东西吗?即使它失败了,它也可以作为其他人的样板代码。您能否提供一个函数声明,说明您将如何看待界面?输入应该是什么?how could this be printed?printf(format_str, specs[0], specs[1])还不够吗? -
字符串是问题的一部分还是只是一个例子?
-
格式字符串中
%s的个数是否总是等于count -
@4386427 是的。这才是重点。 format_str 包含
个说明符,**specs 包含 个字符串。因此,该函数会将 个字符串打印到 format_str。 -
所以
count信息是多余的——元素的数量已经可以通过解析格式化字符串获得?老实说,这看起来像 XY 问题。
标签: c formatting printf variadic-functions