My——itoa

/*题目2:(简答题:10.0分)
编程实现将整型数值转换为字符串。
char *my_itoa(int value, char *buffer, int radix);
参数说明:
value:欲转换的数值。
buffer:目标字符串的地址。
radix:转换后的进制数,可以是2进制,10进制、16进制等。
示例: value = 10; radix = 2; string=“1010”
不考虑value 为负数。
与函数
int sprintf(char *string, char *format ,…);
比较,有什么不同;

#include <iostream>
#include <ctype.h>
#include <limits.h>
#include <stack>

using namespace  std;

char my_itoa_single(int p,int radix)
{
    if(radix == 16 && p >= 10)
    {
        return p + 'W';
    }
    else
    {
        return p + '0';
    }
}

void my_itoa(int value, char *buffer, int radix)
{
    char * p = buffer;
    int itmp = 0;
    char ctmp;
    stack<char> sta;
    if(radix != 10)
    {
        *p = '0';
        ++p;
        if(radix == 16)
        {
            *p = 'X';
            ++p;
        }
    }
    while(value)
    {
        itmp = value%radix;
        value = value/radix;
        ctmp = my_itoa_single(itmp,radix);
        sta.push(ctmp);
    }
    while(!sta.empty())
    {
        *p = sta.top();
        sta.pop();
        ++p;
    }
}

int main()
{
    char buffer[100] = {0};
    my_itoa(10, buffer,2);
    printf("%s\n",buffer);
}

/*
sprintf将一个格式化的字符串输出到目标字符串中,可以,以多种格式输入到目标字符串,10,2,16,8等进制
,还可以弄浮点数,将两个字符串连接起来,常见的错误,目标字符串不够大而产生的溢出问题。
*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值