【发布时间】:2012-12-13 01:44:52
【问题描述】:
我有一个指向整数数组的指针和数组的长度:
unsigned int length = 3;
int *array; // Assume the array has 3 initialized elements
我还有一个字符串和一个缓冲区(假设它足够大)可以这样放入 sprintf:
char buffer[128];
const char *pattern = "(%d, %d, %d)\n";
假设pattern 中只有“%d”和其他字符,但可以是任何形式(即“Test %d: %d”或“%d %d”),并且长度array 的个数将始终与“%d”个数相同。
既然数组的长度可以是任何值,有什么方法可以在不显式枚举array 的元素的情况下实现sprintf (buffer, pattern, &array[0], &array[1], &array[2])?类似于sprintf (buffer, pattern, array) 的东西。我可以根据需要编写尽可能多的辅助函数。我正在考虑伪造一个 va_list,但这似乎是一种不好的做法,因为它将程序限制为某个编译器。
【问题讨论】:
标签: c printf variadic-functions