打印
[其它应用]

编码实现字符串转化为数字

[复制链接]
1086|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2024-3-9 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

编码实现函数atoi(),设计一个程序,把一个字符串转化为一个整型数值。例如数字:“5486321 ”, 转化成字符:5486321。

int myAtoi(const char * str)
{
   int num = 0; //保存转换后的数值
   int isNegative = 0; //记录字符串中是否有负号

   int n =0;
   char *p = str;
   if(p == NULL) //判断指针的合法性
   {
      return -1;
   }
   while(*p++ != '\0') //计算数字符串度
   {
      n++;
   }
   p = str;
   if(p[0] == '-') //判断数组是否有负号
   {
      isNegative = 1;
   }

   char temp = '0';
   for(int i = 0 ; i < n; i++)
   {
      char temp = *p++;
       if(temp > '9' ||temp < '0') //滤除非数字字符
      {
         continue;
      }
      if(num !=0 || temp != '0') //滤除字符串开始的0 字符
      {
         temp -= 0x30; //将数字字符转换为数值
          num += temp *int( pow(10 , n - 1 -i) );
       }
   }
   if(isNegative) //如果字符串中有负号,将数值取反
   {
       return (0 - num);
   }
   else
   {
      return num; //返回转换后的数值
   }
}

使用特权

评论回复
沙发
CarterERO| | 2024-3-18 11:35 | 只看该作者
atoi不是个标准库函数吧

使用特权

评论回复
板凳
LEDyyds| | 2024-3-18 15:01 | 只看该作者
这个在其他平台可以一样用吗

使用特权

评论回复
地板
Jacquetry| | 2024-3-28 10:18 | 只看该作者
可以的,虽然不是标准函数,不过每个编译器应该都自己实现了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

376

主题

1418

帖子

1

粉丝