如何多次打印一个字符串只引用一次?

时间:2015-04-30 21:51:41

标签: c string printf

此代码:

#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读过这样的东西,但我无法找到他解释如何做到的地方。

2 个答案:

答案 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是您要打印的最高值。