此代码:
#include <stdio.h>
void main()
{
char *csv_delimiter = ",";
printf("col1%scol2%scol3%scol4\n", csv_delimiter, csv_delimiter, csv_delimiter);
}
有这个输出:
col1,col2,col3,col4
这正是我所需要的。但我必须多次引用指针csv_delimiter
。如果我有一千列怎么办?有没有办法只引用csv_delimiter
一次并多次打印以分隔尽可能多的列?我正在寻找这样的代码:
#include <stdio.h>
void main()
{
char *csv_delimiter = ",";
printf("col1[REF1]col2[REF1]col3[REF1]col4\n", csv_delimiter);
}
从这个例子中可以看出,我没有寻找循环(由于与实现相关的原因,我不能在原始代码中循环)。我需要一些方法将很多%s
放在一行中,并将它们全部引用到同一个指针,在本例中为csv_delimiter
。我确信这是可能的。我记得在Deitel读过这样的东西,但我无法找到他解释如何做到的地方。
答案 0 :(得分:1)
您可以使用格式说明符位置修饰符:
void main()
{
char *csv_delimiter = ",";
printf("col1%1$scol2%1$scol3%1$scol4\n", csv_delimiter);
}
此处%1 $ s是格式后第一个参数的格式说明符。
答案 1 :(得分:-3)
为什么你不能使用循环?
int i, max;
for(i=0; i<max-1; i++){
printf("col%d%s ", i, csv_delimiter);
}
printf("col%d%\n", max);
其中max是您要打印的最高值。