Что вы подразумеваете под "длиной любой переменной"? Вы имеете в виду количество байтов, используемых для хранения переменной (что лучше достигается с помощью функций sizeof
и strlen
), или длину в байтах строкового представления переменных?
Что касается последнего, вам следует быть осторожным, поскольку вы можете использовать параметры формата для фактического изменения результатов. Рассмотрим следующий пример:
float num = 10.0f;
printf("%.10f", num); // return value should be 13
printf("%f", num); // return value depends on the implementation of printf and the float value supplied
Также вы должны учитывать, что существуют другие представления, кроме десятичного.
Как уже говорили другие, у printf
есть побочный эффект, который он фактически записывает в stdout
. Если вы не хотите этого, вы можете использовать snprintf
для записи в буфер, а не в stdout
:
char buffer[256];
int x = 10;
snprintf(buffer, sizeof(buffer), "%d", x); // return value is '2'