问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vc++中itoa()这个函数不能实现应用什么替代

发布网友 发布时间:2023-07-22 06:08

我来回答

2个回答

热心网友 时间:2023-09-13 13:05

 要不你试试自己增加一个

     /*============itoa=============*/
     /*把num转换成字符串存放在str 指向的字符串里*/
 
     int myitoa(int num, char *str)
     {
          int temp;
          int sign = 0;                          //标记num的符号
 
          char *p;
 
          if (str == NULL)    return -1;
 
          p = str;
 
          /*负数的话取绝对值并改变标记*/
          if (num < 0)
          {
                     num = 0 - num;
                     sign = 1;
          }
 
          /*把数从低位放进字符串*/
          do
          {
                     temp = num % 10;    //取num的最后一位
                     *(p++) = temp + '0';
 
          }while ((num /= 10) != 0);
 
          /*是负数的时候添加‘-’*/
          if (sign == 1)
          {
                    *(p++) = '-';
          }
 
           /*给字符串的末尾添加 ''/0*/
          *(p+1) = '/0';
 
 
          /*字符串逆置*/
          while(str < p)
          {
                   *str = *str + *p;
                   *p = *str - *p;
                   *str = *str - *p;
 
                   str++;
                   p--;
          }
 
 
          return 0;
 
      }
 
 
 
 
      /*========atoi========*/
      /*把str指向的字符串转换成数字*/
 
      #include <stdlib.h>
 
      int myatoi(const char *str)
      {
           int sum = 0;
           int sign = 0;
 
           if (str == NULL)
           {
                    perror("The string is NULL!/n");
                    exit(-1);
           }
 
           /*判断是否为负数*/
           if (*str == '-')
           {
                    sign = 1;
                    str++;
           }
 
 
           /*转换*/
           while (*str != '/0')
           {
                     sum = 10*sum + (*str - '0');
                     str++;
           }
 
 
            /*判断是否为负数*/
           if(sign == 1)
           {
                    sum = 0 - sum;
           }
 
           return sum;
 
      }
 
      另外还写 float 与 字符串 转换,代码如下
 
     
/*
 *File : ftoa.c
 */

/*Float ===> String*/

int ftoa(char *str, float num, int n)        //n是转换的精度,即是字符串'.'后有几位小数
{
    int     sumI;
    float   sumF;
    int     sign = 0;
    int     temp;
    int     count = 0;

    char *p;
    char *pp;

    if(str == NULL) return -1;
    p = str;

    /*Is less than 0*/
    if(num < 0)
    {
        sign = 1;
        num = 0 - num;
    }

    sumI = (int)num;    //sumI is the part of int
    sumF = num - sumI;  //sumF is the part of float

    /*Int ===> String*/
    do
    {
        temp = sumI % 10;
        *(str++) = temp + '0';
    }while((sumI = sumI /10) != 0);

    /*******End*******/
 

    if(sign == 1)
    {
        *(str++) = '-';
    }

    pp = str;
    
    pp--;
    while(p < pp)
    {
        *p = *p + *pp;
        *pp = *p - *pp;
        *p = *p -*pp;
        p++;
        pp--;
    }

    *(str++) = '.';     //point

    /*Float ===> String*/
    do
    {
        temp = (int)(sumF*10);
        *(str++) = temp + '0';

        if((++count) == n)
            break;
    
        sumF = sumF*10 - temp;

    }while(!(sumF > -0.000001 && sumF < 0.000001));

    *str = '/0';

    return 0;

}

 
 



/*
 * File : atof.c
 */

/*String ===> Float*/

float atof(const char *str)
{
    float   sumF = 0;
    int     sumI = 0;
    int     sign = 0;

    if(str == NULL) return -1;
    
    /*Is less than 0 ?*/
    if(*str == '-')
    {
        sign = 1;
        str++;
    }

    /*The part of int*/
    while(*str != '.')
    {
        sumI = 10*sumI + (*str - '0');
        str++;
    }

    /*Let p point to the end*/
    while(*str != '/0')
    {
        str++;
    }

    str--;          //Your know!

    /*The part of float*/
    while(*str != '.')
    {
        sumF = 0.1*sumF + (*str - '0');
        str--;
    }

    sumF = 0.1*sumF;

    sumF += sumI;

    if(sign == 1)
    {
        sumF = 0 - sumF;
    }

    return sumF;

}

转载一个大侠的代码

热心网友 时间:2023-09-13 13:06

sprintf( );
或者 CString str;
str.Format( );
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...的电器到成都,请问一下,那个航空快一些呀,多少/公斤? 前女友和我分手一年之后,出车祸死了,我很高兴,这种心理是不是不... 为什么听到前女友去世的消息,我竟然放声大哭,她很爱我,是我对她腻了... 兰州银行充天然气必须要本行卡吗 从服饰礼仪看中西方文化差异 为什么iqoo11评价那么低? 相机快门线的运用范围 快门线是干什么用的 请问这是什么虫子 还挺硬的 在楼房内 整理箱上面发现的 屋内有木质上... 请问这是什么虫子?家里抓到,2cm左右。坐标北京,昌平,冬季12月,楼房... 作文一般分为几个文体 梦见自己戴上一个新的玉手镯是什么意思 猪场管理软件哪家好,能不能给推荐个靠谱的? 广东中原地产代理有限公司招人事是不是骗人的 机床控制开关上的135 246如何分 开原婚宴包席哪家菜好吃而不贵,10桌以内 “某人发生什么事” sth happen ——sb.横线上填什么? 谢谢!!! 在韩国SGI是什么教? 黑带酒红色的短发配什么颜色的美瞳 篮网不敌76人,欧文37分,这个赛季篮网能冲出东部吗? 美人鱼吃小孩是真是假 美人鱼吃小孩是不是真的 亲求颐和园 我的清香木之前长势一直很好,但是不知道为什么这一个月的时间黄叶子越来越多,原本那股清香的味道也没有 清香木怎么没香味 谁能帮我翻译一下,汉译英。。。 男生黑色西装描写一段 衣着西装革履的人 的外貌描写 求问形容游戏结局的这几个英文都是什么意思? happy end good end bad end 天气预报,进行体育活动,不得不,在家,到来,脱下,你真能干,一条,醒了,等一等,出来了用英语怎么写 .苏轼是唐朝人还是宋朝人? itoa()函数,不能对数0001进行转换为“0001”想个办法 如何留住公司里的老员工? 梦见和同学过年的预兆 粉墙用水泥大沙涂料好还是用石膏和涂料好? 室内天花板掉皮,都露出了水泥板了,用白水泥补好还是石膏补好,怎么施工?我是外行,想自己弄,望大师 仁和 清火胶囊 成本管理包括对费用的管理吗?为什么? 如何让商家给我好评? &lt;野猪大改造&gt;的植木 是谁》?他的资料啊? 四月十九日白天无间重播几点开始 烟台万达文华酒店属于哪个街道 如何培养讲故事的能力 东六区有哪些国家? 刚会爬的猫从桌子上翻下来了摔到头了观察了几分钟没有任何异常是不是没事 是不是得多观察几小时? 刚会爬的猫从桌子上翻了下来摔到头了现在意识很清醒吃饭喝水都正常是不是没事? 刚抱回来会爬的小猫从桌子上翻下来摔倒头了不知道有没有事?观察了几分钟一切正常没有呕吐现在在自己喝水 小猫椅子上摔下来 刚出生大概俩三个星期的小猫从桌子上摔下来会不会有事? 小猫在我腿上睡觉,摔下来 小猫从桌子椅子跳下来会发出呃的一声,4个月,怎么回事呢?