我想使用printf()
使用C打印列表。是否有%
标识符可用于此目的?
(例如,我将printf(%s, "hello");
用作字符串。)
答案 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的信息。您可能会需要它。