GCC 中与 C / C++ 的库函数名称可能不同了

32 篇文章 0 订阅

C/C++中使用

    itoa( i, buffer, 10 );
    printf( "String of integer %d (radix 10): %s\n", i, buffer );
    itoa( i, buffer, 16 );
    printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
    itoa( i, buffer, 2  );
    printf( "String of integer %d (radix 2): %s\n", i, buffer );

    ltoa( l, buffer, 16 );
    printf( "String of long int %ld (radix 16): 0x%s\n", l,
            buffer );

    ultoa( ul, buffer, 16 );
    printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
            buffer );


GCC中使用

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    char buffer[20];
    int  i = 3445;
    long l = -344115L;
    unsigned long ul = 1234567890UL;

    _itoa( i, buffer, 10 );
    printf( "String of integer %d (radix 10): %s\n", i, buffer );
    _itoa( i, buffer, 16 );
    printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
    _itoa( i, buffer, 2  );
    printf( "String of integer %d (radix 2): %s\n", i, buffer );

    _ltoa( l, buffer, 16 );
    printf( "String of long int %ld (radix 16): 0x%s\n", l,
            buffer );

    _ultoa( ul, buffer, 16 );
    printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
            buffer );
}

自己写库函数

EXTERN_C char* ultoa(unsigned long n, char* buffer, int radix)
{
    static const char digital_alphabet[] = "0123456789ABCDEF";
    const int MAX_WIDTH = sizeof(long)*CHAR_BIT;
    char temp_buffer[MAX_WIDTH+1]={0};
    char* p = temp_buffer+MAX_WIDTH;
    do
    {
        *(p--) = digital_alphabet[n%radix];
        n /= radix;
    }while(n);
    p++;
    memcpy(buffer, p, strlen(p)+1);

    return buffer;
}

EXTERN_C char* ltoa(long n, char* buffer, int radix)
{
    unsigned long d = n>0 ? n : -n;
    char * p = buffer;
    if(n<0)
        *(p++) = '-';
    ultoa(d, p, radix);

    return buffer;
}

__inline char* utoa(unsigned n, char* buffer, int radix)
{
    return ultoa(n, buffer, radix);
}

__inline char* itoa(int n, char* buffer, int radix)
{
    return ltoa(n, buffer, radix);
}
























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值