простейший способ преобразования int в строку в C

#c

#c

Вопрос:

Меня попросили выполнить некоторую логику для целого числа, что, я думаю, было бы намного проще, если бы я преобразовал его в строку. Поэтому, пожалуйста, подскажите мне, есть ли простой способ, отличный от использования функции «sprintf» в C

Комментарии:

1. Что не так с sprintf ?

2. Существует itoa() , но не уверен, что все намного проще.

3. Я не думаю, что это становится намного проще, чем sprintf — не в vanilla C. В C есть stringstreams и все такое, и он предоставляет больше синтаксического сахара для переноса преобразований, если вы хотите, но в C я не вижу более простого способа.

4. Как правило, функции стандартной библиотеки C не будут динамически выделять память для возврата результата, поэтому вы, вероятно, не найдете что-то с подписью char *tostring(int)

5. может быть, вы могли бы поделиться с нами, какую логику вы хотите выполнить, которая проще для строки?

Ответ №1:

Единственный лучший способ, чем sprintf есть snprintf . Для простого целочисленного форматирования это, вероятно, не имеет значения, но snprintf защитит вас от катастрофы, если вы сделаете глупое предположение (например, это int не может быть более 10 цифр) или даже разумное (например CHAR_BIT==8 )…

 #define INT_DECIMAL_DIGITS (24*sizeof(int)/CHAR_BIT) // Safe upper bound
char buf[INT_DECIMAL_DIGITS 2]; // Optional sign and null termination
snprintf(buf, sizeof buf, "%d", x);
  

Не может быть намного проще…