как преобразовать целое число в строку в c?

<p>я попробовал этот пример:</p><pre><code>/* itoa example */ #include <stdio.h> #include <stdlib.h> int main () { int i; char buffer [33]; printf ("enter a number: "); scanf ("%d",&i); itoa (i,buffer,10); printf ("decimal: %s\n",buffer); itoa (i,buffer,16); printf ("hexadecimal: %s\n",buffer); itoa (i,buffer,2); printf ("binary: %s\n",buffer); return 0; } </code></pre><p>но пример там не работает (он говорит, что функция <code>itoa</code> не существует).</p>

<p>используйте <a href="http://en.cppreference.com/w/c/io/fprintf"><code>sprintf()</code></a> :</p><pre><code>int someint = 368; char str[12]; sprintf(str, "%d", someint); </code></pre><p>все числа, представляемые <code>int</code>, поместятся в массив из 12 символов без переполнения, если только ваш компилятор не использует более 32 бит для <code>int</code>. при использовании чисел с большим размером, например <code>long</code> для большинства 64-битных компиляторов вам необходимо увеличить размер массива - не менее 21 символа для 64-битных типов.</p>

<p>создание собственного <code>itoa</code> также легко, попробуйте это:</p><pre><code>char* itoa(int i, char b[]){ char const digit[] = "0123456789"; char* p = b; if(i<0){ *p++ = '-'; i *= -1; } int shifter = i; do{ //move to where representation ends ++p; shifter = shifter/10; }while(shifter); *p = '\0'; do{ //move back, inserting digits as u go *--p = digit[i%10]; i = i/10; }while(i); return b; } </code></pre><p>или используйте стандартную функцию <code>sprintf()</code>.</p>

<p>это потому, что <code>itoa</code> не является стандартной функцией. попробуйте вместо этого <code>snprintf</code>.</p><pre><code>char str[len]; snprintf(str, len, "%d", 42); </code></pre>