如何将多个相同的变量打印成多个字符串?

我有一个这样的格式字符串:
buf[] = "A%d,B%d,C%d,D%d,F%d,G%d,H%d,I%d,J%d";

我想为每个%d插入相同的整数,所以我使用:

int val = 6;
 sprintf(buf2,buf,val,val);

我可以使用sprintf,只需要我写val一次,sprintf会使用它为每个%d?

解决方法

是的,您可以每次使用%1 $d. 1 $引用第二个参数,你显然可以用其他参数来做.

演示:http://codepad.org/xVmdJkpN

请注意,位置说明符是POSIX扩展名,因此它可能无法与每个编译器一起使用.如果你需要它,例如使用Visual C编译器,考虑使用丑陋的方式重复参数或根本不使用printf风格的函数.另一个选择是使用POSIX兼容的sprintf实现或使用多个调用在循环中每次附加一个数字(如果格式字符串是动态构建的,这将阻止您指定正确数量的参数).

在旁注中,应避免sprintf.使用snprintf(buf2,sizeof(buf2),….)代替.当然这需要buf2在编译时有一个静态大小已知 – 但是如果你手动分配它,你可以简单地使用包含长度而不是sizeof(buf2)的变量.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...