Я пытаюсь получить некоторое форматирование, сделанное в моем операторе sprintf, но он не работает так, как я ожидаю. Вот строка:Получение правильного форматирования с помощью sprintf()
n = sprintf(buffer, "x = %d.%d, y = %d.%d, z = %d.%d \n", x1, x2, y1, y2, z1, z2);
В этой распечатке x1 является целая часть числа, и х2 дробная часть. Все было бы хорошо, за исключением того, что мне нужно набивать 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, ну это копия, вставленная из моего кода, и я думаю, что они 0s. Я еще раз проверил: P Я как бы взломал вместе функцию быстрой замены для этого, но мне было бы интересно узнать, почему это все равно не работает. – Mewa
Хорошо, если это копия, ваш формат правильный. Он работал с копией, здесь, поскольку визуальный осмотр сказал, что это должно быть. Итак, какой компилятор (и реализация библиотеки) вы используете? Похоже, что он не реализует все флаги. Из любопытства, что он делает с '% d.% 2d'? Это прокладка? –