加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将long转换为字符串,保证不使用堆内存

发布时间:2020-12-16 07:09:21 所属栏目:百科 来源:网络整理
导读:我试图在内存分配器中将long转换为字符串,因此我需要避免使用堆内存. 我想过使用sprintf,但是在某个地方它使用堆内存,就像我得到的调用堆栈一样.即LocaleUpdate.是否有捷径可寻? 解决方法 /** * Convert a long to a string in a provided buffer. * * @par
我试图在内存分配器中将long转换为字符串,因此我需要避免使用堆内存.

我想过使用sprintf,但是在某个地方它使用堆内存,就像我得到的调用堆栈一样.即LocaleUpdate.是否有捷径可寻?

解决方法

/**
 * Convert a long to a string in a provided buffer.
 *
 * @param n      The long to convert to a string
 * @param s      The buffer to build the string in. Should be
 *               long enough to hold as big a string as a
 *               negative long with a terminating zero can be.
 *
 * @return A pointer to the result of the conversion.
 */
char* itoaish(long n,char* s)
{
    int negative = 0;
    char* p = &s[11];
    if(0 > n)
    {
        negative = 1;
        n = -n;
    }
    *p = 0;
    if(!n)
    {
        *--p = '0';
    }
    while(n)
    {
        *--p = '0' + n % 10;
        n /= 10;
    }
    if(negative)
    {
        *--p = '-';
    }
    return p;
}

main()
{
    long n = -1234567890;
    char s[12];
    char* p = itoaish(n,s);
    printf("%s",p);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读