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'做了什麼?它是否是空間墊? –