C语言实现将字符串转换为数字的方法

发布者:Aq123456258最新更新时间:2015-09-09 来源: eefocus关键字:C语言  字符串  数字 手机看文章 扫描二维码
随时随地手机看文章
这篇文章主要介绍了C语言实现将字符串转换为数字的方法,涉及系统函数atoi()函数的使用技巧,需要的朋友可以参考下
 

本文实例讲述了C语言实现将字符串转换为数字的方法。分享给大家供大家参考。具体实现方法如下:

C语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)的数字。以下是用atoi()函数将字符串转换为整数的一个例子:

代码如下:
# include
# include
void main (void) ;
void main (void)
{
    int num;
    char * str = "100";
    num = atoi(str);
    printf("The string 'str' is %s and the number 'num' is %d. ",str, num);
}

 
atoi()函数只有一个参数,即要转换为数字的字符串。atoi()函数的返回值就是转换所得的整型值。  

下列函数可以将字符串转换为数字:
------------------------------------------------------------------------
    函数名    作  用
------------------------------------------------------------------------
 atof()     将字符串转换为双精度浮点型值
 atoi()     将字符串转换为整型值
 atol()     将字符串转换为长整型值
 strtod()   将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字
 strtol()   将字符串转换为长整值,并报告不能被转换的所有剩余数字
 strtoul()  将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字
------------------------------------------------------------------------ 
 
将字符串转换为数字时可能会导致溢出,如果你使用的是strtoul()这样的函数,你就能检查这种溢出错误。请看下例: 

复制代码 代码如下:
# include
# include
# include
void main(void);
void main (void)
{
    char* str = "1234567891011121314151617181920" ;
    unsigned long num;
    char * leftover;
    num = strtoul(str, &leftover, 10);
    printf("Original string: %s ",str);
    printf("Converted number: %1u " , num);
    printf("Leftover characters: %s " , leftover);
}

在上例中,要转换的字符串太长,超出了无符号长整型值的取值范围,因此,strtoul()函数将返回 ULONG_MAX(4294967295),并使。char leftover指向字符串中导致溢出的那部分字符;同时,strtoul()函数还将全局变量errno赋值为ERANGE,以通知函数的调用者发生了 溢出错误。函数strtod()和strtol()处理溢出错误的方式和函数strtoul()完全相同,你可以从编译程序文档中进一步了解这三个函数的 有关细节。

希望本文所述对大家的C语言程序设计有所帮助。

关键字:C语言  字符串  数字 引用地址:C语言实现将字符串转换为数字的方法

上一篇:C语言中字符串和数字的相互转换实现代码
下一篇:C语言中字符串操作

推荐阅读最新更新时间:2024-03-16 14:30

数字万用表的基本使用方法图解
主要分指针式万用表和数字万用表,目前使用指针式的万用表很少,接下来介绍数字万用表的使用。 数字万用表是一种最常用的一种测量电流、电压和电阻,的工具。无论是,热工,还是制作或维修器具的工作人员都,要用它来测量。数字万用表使用范围特别广泛,万用表本身轻便,易携带。受到众多使用者的青睐。 测量电压。电压分为直流电压,交流电压,所以测量直流电压要把指针转到直流电压档,把把表笔并连到电路中。
[测试测量]
<font color='red'>数字</font>万用表的基本使用方法图解
以C8051F020为核心的数字式半导体激光器电源的设计
以C8051F020为核心的数字式半导体激光器电源的设计 本文以数字集成电路为核心,设计能够实现智能控制的半导体激光器电源。 半导体激光器LD工作影响因素 半导体激光器的核心是PN结一旦被击穿或谐振腔面部分遭到破坏,则无法产生非平衡载流子和辐射复合,视其破坏程度而表现为激光器输出降低或失效。 造成LD损坏的原因主要为腔面污染和浪涌击穿。腔面污染可通过净化工作环境来解决,而更多的损坏缘于浪涌击穿。浪涌会产生半导体激光器PN结损伤或击穿,其产生原因是多方面的,包括:①电源开关瞬间电流;②电网中其它用电装备起停机;③雷电;④强的静电场等。实际工作环境下的高压、静电、浪涌冲击等因素将造成LD的损坏或使用寿命缩短,因此必须采取措施加以
[单片机]
以C8051F020为核心的<font color='red'>数字</font>式半导体激光器电源的设计
51单片机驱动DS12C887的时钟芯片C语言程序
本程序旨在读出DS12C887的时间,显示部分只做了分和秒的部分,已通过测试,详细注释很好用的。 #include absacc.h #include reg51.h #define uchar unsigned char #define MCA XBYTE /*寄存器A*/ #define MCB XBYTE /* 寄存器B*/ #define MCC XBYTE /* 寄存器C*/ #define MCD XBYTE /*寄存器D */ #define HOURW XBYTE /*时报警*/ #define SECONDW XBYTE /*秒报警*/ #define YEAR XB
[单片机]
数字万用表对三极管和MOS管的测量
下面是三极管的架构以及在电路图中的各种标识方法 将万用表打到二极管档(蜂鸣档)对三极管测量时,首先我们要确定哪只脚是b极。用红表笔接触其中任意一只脚不动,黑表笔去接触另外两只脚,如果能够测得两组相近且小于1的数字,说明此时红笔接触的就是b极。如果测得两组数字不相近,那说明此时红笔接触的不是b极应把红笔换一只脚,黑笔去测另外两只脚,直到找到b极为止。如果我们知道了哪只脚是b极,怎样去判断另外两只脚哪个是c极和e极呢?如下图: 图中红笔为b极.黑笔在另外两脚分别测得两组相近的数据,其中有一组数据会稍微大一点,此脚即为e极,小的那脚则为c极。并且我们知道此管为NPN型三极管,因为红笔在b 极!而对于PNP型三极管的测
[测试测量]
<font color='red'>数字</font>万用表对三极管和MOS管的测量
地面数字电视符号与载波同步的FPGA实现
1 引言 中国于2006年8月颁布了数字电视的地面广播标准GB20600-2006,成为继美国ATSC、欧洲DVB-T、日本ISDB-T之后又一重要的地面数字电视广播的国家标准。GB20600-2006中对中国数字电视地面传输(DigitalTerrestrial Television Broadcasting,DTTB)系统传输的帧结构、信道编码和调制作了具体的规定。其中帧结构的基本单元——信号帧采用了循环扩展的时域帧头结构,即在每3780个符号的帧体前加入一定长度的经循环扩展后的伪随机序列作为帧头,为系统提供同步和信道估计。本文提出一种接收机同步算法的实现结构,利用已知的时域帧头,联合进行帧同步和载波同步,减少了载波偏差对符
[应用]
TMS320F2812型数字信号处理器与PC的串行通信
摘要:讨论TMS320F2812与PC之间的串行通信方案,给出TI公司的TMS320F2812型DSP和Maxim公司的MAX3160型收发器的硬件接口电路,以及在此基础上使用中断和查询方法实现的串行通信软件流程,同时给出DSP SCI的初始化、发送和接收数据程序代码。 关键词:串行通信;数据信号处理;收发器;PC 引言 目前,微控制器系统在国民经济和人民生活中得到了广泛的运用,而数据传输业仍是一个很重要的领域。对于这些与计算机相距不远的人-机交换设备和串行存储的外部设备(如终端、打印机、逻辑分析仪、磁盘等)来说,采用串行通讯方式交换数据已非常普通 。 在以往DSP与PC之间的串行通信中,由于运行速度的差异和上下位机之间
[应用]
数字电源浅析之二:数字通信协议
数字电源通过SMBus、PMBus和AVSBus(PMBus协议的子集,用于实现自适应电压缩放)相互通信。使用支持SMBus和PMBus的设备进行功率转换提供了传统模拟电源系统无法实现的灵活性和控制。PMBus及其相关标准由System Management Interface Forum(SMIF)开发和维护。 PMBus已开发维护多年,SMIF最近庆祝了其15周年生日。2014年3月,AVSBus作为PMBus标准第1.3版的一部分发布。PMBus规范工作组目前正在对PMBus 1.3进行第二次修订。最近的版本将是PMBus 1.4,以消除意义不明确之处并向现有命令集添加一些次要功能。目前正在最后确定。 AVSBus
[电源管理]
<font color='red'>数字</font>电源浅析之二:<font color='red'>数字</font>通信协议
基于C167CS微控制器的数字化电梯系统
   摘要 : 基于C167CS 微控制器设计了数字化电梯系统, 该系统中利用多规则加权的模糊控制算法进行群控控制,以CAN总线多主方式实现各控制器间的串行通信。该系统提高了电梯的运行效率,并增强了电梯运行的实时性控制,系统的灵活性与可靠性得到了提高。    1 引言   国民经济的飞速发展, 现代化程度日益提高,高层建筑愈来愈多, 电梯也随之增多, 电梯产品在人们物质文化生活中的地位得到了提高,成为重要的运输设备之一。国内传统的电梯控制一是由继电器、接触器构成。它不仅存在着可靠性差、成本高、故障率高等缺点,而且在层数增加时,配线变化给制造及安装带来诸多不变。若用微机来控制电梯具有许多优点,进而数字化电梯控制系统是发展的必然
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved