首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想转换整型为字符串没有itoa函数

我想转换整型为字符串没有itoa函数
EN

Stack Overflow用户
提问于 2012-04-03 21:53:42
回答 4查看 28K关注 0票数 0

我想在不使用itoa()函数的情况下在C中转换int to char*。

因为在我的Linux系统上,我没有itoa函数。我使用的是我在here中找到的代码

我也想在使用Linux的嵌入式设备上运行这个功能。

所以我正在寻找不使用itoa的。

我也不想使用sprintf,因为它只用于打印。

所以任何人都可以帮我解决这个问题。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-04 00:51:45

我找到了解决这个问题的办法..

我很高兴,我想要我所期望的。

代码语言:javascript
运行
复制
#include <string.h>
#include <stdlib.h>

char *i_to_a(int num);

int main()
{

    char *str = i_to_a(4567);
    printf("%s",str);
    free(str);
    str = NULL;
return 0;

}
int no_of_digits(int num)
{
    int digit_count = 0;

    while(num > 0)
    {
        digit_count++;
        num /= 10;
    }

    return digit_count;
}


char *i_to_a(int num)
{
    char *str;
    int digit_count = 0;

    if(num < 0)
    {
        num = -1*num;
        digit_count++;
    }

    digit_count += no_of_digits(num);   
    str = malloc(sizeof(char)*(digit_count+1));

    str[digit_count] = '\0';

    while(num > 0)
    {
        str[digit_count-1] = num%10 + '0';
        num = num/10;
        digit_count--;
    }

    if(digit_count == 1)
        str[0] = '-';

    return str;
}
票数 -1
EN

Stack Overflow用户

发布于 2012-04-03 21:57:15

事情是这样的,snprintf是一个完美的函数:

代码语言:javascript
运行
复制
char str[LEN];
snprintf(str, sizeof(str), "%d", num);
票数 7
EN

Stack Overflow用户

发布于 2012-04-04 21:14:59

下面是一个您可以使用的简单代码片段。有更优雅和更高级的方法,但这可以完成工作。

在过去的嵌入式项目中,我测量过它的效率大约是sprintf()的1000倍。此代码也是MISRA-C兼容的。

代码语言:javascript
运行
复制
void getDecStr (uint8_t* str, uint8_t len, uint32_t val)
{
  uint8_t i;

  for(i=1; i<=len; i++)
  {
    str[len-i] = (uint8_t) ((val % 10UL) + '0');
    val/=10;
  }

  str[i-1] = '\0';
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9994742

复制
相关文章

相似问题

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