How can I print the same variable into a string several times?

后端 未结 2 1429
再見小時候
再見小時候 2020-12-18 22:31

I have a format string like this:

buf[] = \"A%d,B%d,C%d,D%d,F%d,G%d,H%d,I%d,J%d\";

and I want to insert the same integer for each %d<

相关标签:
2条回答
  • 2020-12-18 22:39

    There is no standard (i.e. portable) way of doing this.

    0 讨论(0)
  • 2020-12-18 22:40

    Yes, you can use %1$d everytime. The 1$ references the second argument, you could obviously do it with other arguments, too.

    Demo: http://codepad.org/xVmdJkpN

    Note that the position specifier is a POSIX extension - so it might not work with every single compiler. If you need it to work e.g. with the Visual C++ compiler, consider using the ugly way of repeating the argument or do not use a printf-style function at all. Another option would be using a POSIX-compatible sprintf implementation or using multiple calls to append one number everytime in a loop (in case the format string is built dynamically which would prevent you from specifying the correct number of arguments).


    On a side-note, sprintf should be avoided. Use snprintf(buf2, sizeof(buf2), ....) instead. Of course this requires buf2 to have a static size known at compile-time - but if you allocate it manually you can simply use the variable containing the length instead of sizeof(buf2).

    0 讨论(0)
提交回复
热议问题