Да, вы можете это сделать. Вам необходимо использовать звездочку *
как ширину поля и .*
как точность. Затем вам нужно предоставить аргументы, несущие значения. Что-то вроде
sprintf(myNumber,"%*.*lf",A,B,a);
Примечание: A
и B
должны быть типа int
. От стандарта C11
, глава §7.21.6.1, fprintf()
функция
... ширина поля, или точность, или оба могут быть обозначены звездочкой. В аргументе аргумент int
предоставляет ширину или точность поля. Аргументы, указывающие ширину поля, или точность, или и то и другое, должны отображаться (в указанном порядке) перед преобразованием аргумента (если есть). Отрицательный аргумент ширины поля принимается как флаг -
, за которым следует положительная ширина поля. Аргумент с отрицательной точностью принимается так, как если бы точность была опущена.
Да, вы можете, например, см [эта ссылка 'printf' (и family)] (http://en.cppreference.com/w/c/io/fprintf). –
В качестве альтернативы, сама строка формата также может быть создана с помощью другого вызова sprintf. – Lundin