数字字符串转为数字 C语言实现

在Java中经常用到一个操作,数字字符串转为数字,Integer.parseInt()方法给出来满意的解决方法,但是C语言怎么实现呢,其实也有方法,先买个关子,其实我想做的的事情是不依赖于标准函数库,自己写一个程序实现。
一时兴起,想到的一个操作,数字字符串如何转数组呢???问了一下度娘,没找到满意的回答,笔者琢磨则自己写一个,并且还准备了几份惊喜,话不多说,直接上干货,如下代码:

//此函数需要特别注意数据类型
//任何时候涉及浮点数的运算都用double
//pow()返回值为double 必须要保证传入的参数至少有一个为double类型
//pow()函数返回类型是double 确保精度足够 便于浮点运算
#include<stdio.h>
#include<math.h>
#include<string.h>
main(){double n[10],s=0;char str[10];int len;gets(str);len= strlen(str);for(int i=0;i<len;i++){n[i]=(double)str[i]-48;//以下len-i-1为int类型 强转为(double) s+=pow(10,len-1-i)*n[i]; }printf("转换后的数字为:%.0f",s);
}

运行截图↓↓↓

该部分代码虽未涉及字符串转数字函数atoi(),但涉及到了math.h 和 string.h
头文件 求数的幂运算和字符串长度的时候偷了一下懒。不行不行,俺要闭门造车,不要拦着我,于是接下来我自己写个函数求数的幂运算和字符串长度,不要拦着我!!!代码如下(DIYpow()是函数体 可直接使用)↓↓↓

//DIYpow函数
#include<stdio.h>
double DIYpow(double a,double b){//求a的b次方 a为底数 b为指数double s=1.0;   //s用于存储最终结果 for(int i=0;i<b;i++){s*=a; } return s;
}
int main(){double a,b;scanf("%lf%lf",&a,&b);double val = DIYpow(a,b);printf("%lf",DIYpow(a,b));
}

来看看效果:

哈哈,第一次尝试成功了,给了笔者更大的信心,来,求下字符串长度,呼唤指针,呼唤指针,呼唤指针,指针来也,如下代码:
//DIYstrlen()函数 指针实现

#include<stdio.h>
int DIYstrlen(char *p){int n=0;while(*p++)n++;return n;
}
int main(){//定义指针p指向str字符串(C语言用字符数组表示)char str[10];  scanf("%s",str);DIYstrlen(str);printf("字符串长度为:%d",DIYstrlen(str));
}

神奇的指针充当着什么角色了,不急,且先看看效果图:

不错不错 被指针这么一指,字符串的长度乖乖现形了。

刚刚哪里偷懒来着??好像是求数的幂运算和字符串长度,没错,这不正好自己把轮子造出来了吗,就差组装了,来看看组装后的代码吧:

#include<stdio.h>
int DIYstrlen(char *p){int n=0;while(*p++)n++;return n;
}double DIYpow(double a,double b){//求a的b次方 a为底数 b为指数double s=1.0;  //s用于存储最终结果 for(int i=0;i<b;i++){s*=a; } return s;
}main(){double n[10],s=0;char str[10];int len;scanf("%s",str);len= DIYstrlen(str);for(int i=0;i<len;i++){n[i]=(double)str[i]-48;//以下len-i-1为int类型 强转为(double) s+=DIYpow(10,len-1-i)*n[i]; }printf("转换后的数字为:%.0f",s);
}

组装后的效果来袭:

至此该函数的DIY就完全结束了,以上的程序有以下需要注意的几点,如下

  1. 第一段代码字符串输入用get(),之后用的scanf() gets()可读取空格 回车结束 scanf() 遇到空格即结束
  2. 以上程序未做异常处理 输入时只能输入数字字符串 且限定了长度10,可根据实际需要修改字符串长度
  3. 以上程序特别特别注意pow()/DIYpow()函数返回double类型 运算时为了保证结果准确性,在大部分的地方可将int转为double
  4. *s+=pow/DIYpow(10,len-1-i)n[i] 该部分一定要注意 先计算完pow()/DIYpow()函数的值再乘以对应值
  5. 程序设计过程中有一个难点是将字符串转为数字数组后如何得到目标数字,其实很简单 用数组的 第i项乘以10^(n-1-i) 设置一个变量求和即可

转载请注明:https://blog.csdn.net/ACDSee9/article/details/113791720

数字字符串转为数字 C语言实现相关推荐

  1. JS 将数字字符串转为 数字数组

    JS 将数字字符串转为 数字数组 将字符串转化为数组主要代码: let str = '3,4,5,6' let arr = str.split(",").map(Number); ...

  2. 把ASCII码的字符串转为数字的16进制

    /* 函数名称:AsciiStrToHexArray 功能:把ASCII码的字符串转为数字的16进制 参数dst:存储16进制数组数据指针 参数src:存储ASCII码的字符串指针 返回值:16进制的 ...

  3. python 列表中的数字转字符串_python 将列表中的字符串转为数字

    python 将列表中的字符串转为数字 转自:https://www.jb51.net/article/86561.htm 本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具 ...

  4. c语言两字符串转数字后相加,一个觉得很难的C语言问题。对两个数字字符串相加。 C语言 如何把一个字符串中相连的两个数字转化为一......

    导航:网站首页 > 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个字符串中相连的两个数字转化为一... 一个觉得很难的C语言问题.对两个数字字符串相加. C语言 如何把一个 ...

  5. python 将列表中的字符串转为数字_python 将列表中的字符串转为数字

    本文实例讲述了python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['1', '5', '10', '8'] 想要把每个元素转换为数字: ...

  6. vb 字符串转为数字 和判断字符串是否是数字字符串【转】

    1 Val 函数 返回包含于字符串内的数字,字符串中是一个适当类型的数值. 语法 Val(string) 必要的 string 参数可以是任何有效的字符串表达式. 说明 Val 函数,在它不能识别为数 ...

  7. python 如何将数字字符串转换为数字?

    将单个数字字符串转换为数字 def char2num(s):return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7 ...

  8. c语言ip字符串转为数组,C语言 ip地址转换为单个数字

    今天遇到一个面试测试题,如下 请写一段代码,可以将输入为"0.0.0.0"-"255.255.255.255"的字符串转换为int型整数数组. 输入:" ...

  9. python列表字符串转数字_python 将列表中的字符串转为数字

    本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['1', '5', '10', '8'] 想要把每个元素转换为数字: ...

最新文章

  1. POJ2796 Feel Good(单调栈)
  2. java二分法找数数_JavaSE语言基础之数组二分法查找
  3. 什么是同源策略及限制
  4. 文本编辑器实现关于对话框的功能
  5. Python3.7实现socket多线程通信
  6. centos安装anaconda_每天三分钟之TensorFlow学习03:Win下安装TF2
  7. 2018-10-19 Chrome插件实现GitHub代码离线翻译v0.0.4
  8. 排序算法-08基数排序(python实现)
  9. C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...
  10. C++输入输出:cin/cout 还是 scanf/printf?
  11. NS2相关学习——完成一个新协议(3)
  12. servlet3.0异步处理
  13. 服务器预装操作系统,服务器预装操作系统吧
  14. Mac下VirtualBox虚拟机Win7与主机共享文件夹
  15. c语言调用Windows自定义消息,VC自定义消息postmessage用法(消息响应函数)
  16. 关于C#使用工具类解析JSON数据以及将类JSON化
  17. Recovery dropped Procedure
  18. BGP——基本概念3(路由聚合)
  19. 跟着明星在元宇宙炒房,靠谱吗?
  20. 训练数据不够怎么造?yolo5 最有用的trick 之数据增强详解

热门文章

  1. java web统计报表_用Java在Web页面上输出统计图 统计报表
  2. c++学习书籍推荐《C++程序设计语言(特别版)》下载
  3. linux ppp拨号 USB,Linux中实现ppp拨号连接
  4. 最近五年中秋节后第一天涨幅前十个股在此 沪深三七开 更多规律你来找
  5. 生活片段(1)-短暂的深圳实习时光
  6. python爬虫-国家企业_自动查企业工商登记信息(企业信用信息公示系统、极验Geetest与Python爬虫)...
  7. java 什么是计算机
  8. Win7计算机内存不足,请保存文件并关闭这些程序
  9. 在ECS中安装Docker在内部访问RDS数据库
  10. 【愚公系列】2022年10月 使用win11系统自带远程桌面,远程控制VMware中Windows虚拟机系统