我有一个这样的字符串。
char array1[250] = {"Array Values are %d,%d,%d,%d"};
我有四个这样的整数,
int var1 = 25,var2 = 78, var3 = -189,var4 = -200;
我想在array1 中打印var1 到var4。我怎么做?我已经在 array1 本身中有格式说明符。
我有一个这样的字符串。
char array1[250] = {"Array Values are %d,%d,%d,%d"};
我有四个这样的整数,
int var1 = 25,var2 = 78, var3 = -189,var4 = -200;
我想在array1 中打印var1 到var4。我怎么做?我已经在 array1 本身中有格式说明符。
不要将格式说明符放在数组中。做就是了
char array1[128]; // enough space for four ints and the string
sprintf(array1, "Array Values are %d,%d,%d,%d", var1, var2, var3, var4);
只需使用sprintf
但创建另一个输出数组,否则您将有未定义的行为,因为您覆盖了格式字符串。
char output[126];
sprintf(output, array1, var1, var2, var3, var4);
sprintf(array1, array1, var1, var2, var3, var4);
可以。但是我不确定 C 对同时读取和写入同一字符串的反应如何,强烈建议您先将其复制到单独的变量中。
编辑:根据罗迪的评论,我只想说不要做你要求做的事情。格式说明符应该与数据分开,我很肯定您使用它的应用程序可以为良好的设计腾出 25 个字节。