首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C中将整数转换为字符串?

如何在C中将整数转换为字符串?
EN

Stack Overflow用户
提问于 2012-03-11 21:09:03
回答 3查看 1.1M关注 0票数 191

我试过这个例子:

代码语言:javascript
复制
/* 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;
}

但是这里的示例不起作用(它显示函数itoa不存在)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-11 21:12:58

使用sprintf()

代码语言:javascript
复制
int someInt = 368;
char str[12];
sprintf(str, "%d", someInt);

除非您的编译器以某种方式为int使用了超过32位的数组,否则所有可由int表示的数字都可以放入12个字符的数组中,而不会溢出。当使用具有更大位数的数字时,例如大多数64位编译器的long,您需要增加数组大小-对于64位类型,至少21个字符。

票数 298
EN

Stack Overflow用户

发布于 2012-03-12 10:09:32

制作自己的itoa也很容易,试试这个:

代码语言:javascript
复制
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;
}

或者使用标准的sprintf()函数。

票数 56
EN

Stack Overflow用户

发布于 2012-03-11 21:10:17

这是因为itoa不是一个标准函数。请尝试使用snprintf

代码语言:javascript
复制
char str[LEN];
snprintf(str, LEN, "%d", 42);
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9655202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档