【发布时间】:2015-07-27 15:37:33
【问题描述】:
我正在使用sprintf 来制作漂亮的列输出(通过printf 和fprintf),但是在组合两个字符串时遇到了可变字符串长度的问题。
在大多数情况下,我使用它并且它有效:
sprintf(strtmp, "%i\t%-20s\t% 2.2f\t% 2.2f", measnum,
measurementname, setvalue, measuredvalue);
在每个测量函数中运行时,输出如下:
1 MeasurementNameA 75 77 8
2 MeasNameB 50 52 2
但是,有时我想添加到字符串但保持正确调整。没有固定宽度,代码如下:
sprintf(strtmp, "%i\t%s_setup%i\t% 2.2f\t% 2.2f", measnum,
measurementname, counter, setvalue, measuredvalue);
1 MeasureNameA 75 77 8
2 MeasNameB_setup1 50 52 2
3 MeasNameB_setup2 50 51 6
如何在不使用多个步骤的情况下将这些组合起来,这样我的输出是:
1 MeasureNameA 75 77 8
2 MeasNameB_x1 50 52 2
3 MeasNameB_x2 51 53 6
我不能使用 boost。
可能需要额外的信息。
我的伪代码是这样的:
(measurementA)
-Setup measurement A -
-Take measurement A -
-sprintf
-printf, fprintf
(measB)
-Setup measurement B
for(x=1; x<10; x++)
-Set x
-Take measurement B
-sprintf
-printf, fprintf
-end for loop
【问题讨论】:
-
为什么只显示伪代码?
-
1 MeasurementNameA 75 77 8中的MeasurementNameA后面有 3 个数字。8来自哪里? -
Cleb - 因为我简化了一大组代码以排除我无法共享的内容并仅包含相关信息,即格式化字符串。
Alk - 在我的格式化字符串中或stackoverflow 输入
Chux - 它应该是十进制 77 点 8。