1
我试图在我的sprintf语句中完成一些格式化,但似乎没有像我期望的那样工作。这里是行:使用sprintf()获取格式正确
n = sprintf(buffer, "x = %d.%d, y = %d.%d, z = %d.%d \n", x1, x2, y1, y2, z1, z2);
在该打印输出x1是数字的整个部分,x2是小数部分。一切都会很好,除非我需要将x2,y2和z2填充为2位数 - 这意味着我需要填充前导零。
随着例子,我在网上看到的,好像这样做应该工作:
n = sprintf(buffer, "x = %d.%02d, y = %d.%02d, z = %d.%02d \n", x1, x2, y1, y2, z1, z2);
不过,这反而会产生这样的:
x = 2.2d, y = 37.2d, z = 2.2d
以上37实际上是X2,它显然已经转移了y1的位置。我试图在'02'周围放置括号,但是这也没有做任何事。
我试图分裂过这样的时期:(但没有工作)
n = sprintf(buffer, "x = %d. %02d, y = %d. %02d, z = %d. %02d \n", x1, x2, y1, y2, z1, z2);
我真的不知道什么是错的......我会很感激的任何帮助。这在sprintf中并不是特别重要(我理论上可以写一些'if'语句并使它以这种方式工作),但它会很好。
谢谢!
在这里正常工作。您是否曾意外地在转换中输入了'O'而不是'0'? [牵强,我知道] –
@DanielFischer,以及那些粘贴从我的代码复制,我认为他们是0。我再次检查了一下:P我有一种为此快速替换的功能,但我很想知道为什么这不起作用。 – Mewa
好的,如果这是一个复制粘贴,你的格式是正确的。它从这里复制粘贴,视觉检查说应该。那么,你使用的是什么编译器(和库实现)?看起来好像它没有实现所有的标志。出于好奇,它对'%d。%2d'做了什么?它是否是空间垫? –