-1

我有一个这样的字符串。

char array1[250] = {"Array Values are %d,%d,%d,%d"};

我有四个这样的整数,

int var1 = 25,var2 = 78, var3 = -189,var4 = -200;

我想在array1 中打印var1 到var4。我怎么做?我已经在 array1 本身中有格式说明符。

4

3 回答 3

2

不要将格式说明符放在数组中。做就是了

char array1[128]; // enough space for four ints and the string

sprintf(array1, "Array Values are %d,%d,%d,%d", var1, var2, var3, var4);
于 2012-10-15T18:34:00.920 回答
0

只需使用sprintf

但创建另一个输出数组,否则您将有未定义的行为,因为您覆盖了格式字符串。

char output[126];

sprintf(output, array1, var1, var2, var3, var4);
于 2012-10-15T18:31:10.507 回答
0

sprintf(array1, array1, var1, var2, var3, var4);

可以。但是我不确定 C 对同时读取和写入同一字符串的反应如何,强烈建议您先将其复制到单独的变量中。

编辑:根据罗迪的评论,我只想说不要做你要求做的事情。格式说明符应该与数据分开,我很肯定您使用它的应用程序可以为良好的设计腾出 25 个字节。

于 2012-10-15T18:31:35.617 回答