我可以用C打印清单吗?

时间:2019-04-21 16:20:41

标签: c printf

我想使用printf()使用C打印列表。是否有%标识符可用于此目的?

(例如,我将printf(%s, "hello");用作字符串。)

2 个答案:

答案 0 :(得分:2)

否,不支持自动打印列表(无论您要说的是什么)。

您很有可能希望创建一个循环,该循环遍历列表中的每个项目并一次打印一个项目。

如果您要在本网站上获得更多具体帮助,建议您提供具体示例,而不要使用“列表”之类的通用术语。

答案 1 :(得分:1)

通常您不能,但是...

特定于GNU libc (通常是大多数Linux系统上的标准libc),有一种customizing printf的方式;您将首先致电 register_printf_function适当,以后您可以(例如)在%Y调用中使用printf来打印“列表”类型。

但这是GNU libc 扩展,尚未得到广泛使用。

此外,由于printf被声明为具有某些format函数属性...

我不建议这样做(自定义printf)。

实际上,您可能具有一些格式化功能,可以将“列表”转换为字符串,然后将该字符串传递给printf。您的格式化函数通常会返回堆分配的字符串,然后调用者(执行printf)应该free。或者它会从呼叫站点获得一些缓冲空间。

或者,使用printf中的variadic function工具来编写自己的类似<stdarg.h>的函数。并不是很困难,这是处理您的问题的推荐方法问题。出于启发,您可以研究某些C标准库实现中的printf的源代码(例如musl-libc)。

更容易,只需编码您的print_list函数,并在对printf 的调用周围进行调用,就像

printf("x=%d, and lis=", x);
print_list(lis);
printf(", and z=%d\n", z);

还了解有关fflush的信息。您可能会需要它。