加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

atoi、atof、_itoa、_itow 函数使用

(2011-09-04 22:54:59)
标签:

atoi

atof

_itoa

_itow

函数

it

分类: VC 编程

atoi、atof、itoa、itow函数是windows平台下实现字符串与数值相互转换的函数。Linux平台下请使用标准库中的sprintf与sscanf函数。

 
atoi函数

原型:int atoi( const char *string );

ASCII to integer

作用:将字符串转为integer类型

 

atof函数

原型:double atof( const char *string );

ASCII to float

作用:将字符串转为double类型

 

对于以上函数,若字符串无法转化为合法的数值类型,函数将返回0 。

使用范例(来自MSDN):
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif函数使用" />Code
 1http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />#include <stdlib.h>
 2http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />#include <stdio.h>
 3http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />
 4http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />void main( void )
 5http://www.cnblogs.com/Images/dot.gif函数使用" />{
 6http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   char *s; double x; int i; long l;
 7http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />
 8http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   printf( " testing atoi,atof,atol function :\n" ;
 9http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif函数使用" />   = "  -2309.12E-15"   
10http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   = atof( );
11http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   printf( "atof test: ASCII string: %s\tfloat:  %e\n"s, );
12http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />
13http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif函数使用" />   = "7.8912654773d210" 
14http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   = atof( );
15http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   printf( "atof test: ASCII string: %s\tfloat:  %e\n"s, );
16http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />
17http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif函数使用" />   = "  -9885 pigs"     
18http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   = atoi( );
19http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   printf( "atoi test: ASCII string: %s\t\tinteger: %d\n"s, );
20http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />
21http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif函数使用" />   = "98854 dollars"    
22http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   = atol( );
23http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   printf( "atol test: ASCII string: %s\t\tlong: %ld\n"s, );
24http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif函数使用" />}

25http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />
 

输出:

atof test: ASCII string:   -2309.12E-15 float: -2.309120e-012

atof test: ASCII string: 7.8912654773d210 float: 7.891265e+210

atoi test: ASCII string:   -9885 pigs    integer: -9885

atol test: ASCII string: 98854 dollars    long: 98854


 

_itoa函数

原型:char *_itoa( int value, char *str, int radix  );//2<=radix<=36

Integer to ASCII

作用:将Integer类型转换为radix进制,然后以ASCII字符串的形式存放在str中

 

_itow函数

wchar_t * _itow( int value, wchar_t *str, int radix ); //2<=radix<=36

Integer to Wide Char

作用:将Integer类型转换为radix进制,然后以宽字符串的形式存放在str中
 

    以上2个函数均有安全隐患(当字符数组长度不足保存结果时会导致缓冲区溢出),在vs2008中编译时会有警告。推荐使用它们的安全版本—— _itoa_s与_itow_s 。

 
_itoa_s 函数原型如下:

 errno_t _itoa_s(

   int value,

   char *buffer,

   size_t sizeInCharacters,  //存放结果的字符数组长度

   int radix

);

当转换的结果长度比sizeInCharacters变量大时,由于出现access violation,函数将马上终止,而_itoa函数将继续运行。

使用范例(来自MSDN):

http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif函数使用" />Code
 1http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />#include<string.h>
 2http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />#include<stdlib.h>
 3http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />#include<stdio.h>
 4http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />
 5http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />int main( void )
 6http://www.cnblogs.com/Images/dot.gif函数使用" />{
 7http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   char buffer[65];
 8http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   int r;
 9http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   printf( "test _itoa function \n" ;
10http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   forr=10r>=2--)
11http://www.cnblogs.com/Images/dot.gif函数使用" />{
12http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />     _itoa( -1buffer, ); // C4996
13http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />     // Note: _itoa is deprecated; consider using _itoa_s instead
14http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />     printf( "base %d: %s (%d chars)\n"r, buffer, strnlen(buffer, _countof(buffer)) );
15http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif函数使用" />   }

16http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />
17http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   printf( "test _itoa_s function \n " ;
18http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />   forr=10r>=2--)
19http://www.cnblogs.com/Images/dot.gif函数使用" />{
20http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />      _itoa_s( -1buffer, 65);
21http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif函数使用" />      printf( "base %d: %s (%d chars)\n"r, buffer, strnlen(buffer, _countof(buffer)) );
22http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif函数使用" />   }

23http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif函数使用" />}

24http://www.cnblogs.com/Images/OutliningIndicators/None.gif函数使用" />

 

输出:

base 10: -1 (2 chars)

base 9: 12068657453 (11 chars)

base 8: 37777777777 (11 chars)

base 7: 211301422353 (12 chars)

base 6: 1550104015503 (13 chars)

base 5: 32244002423140 (14 chars)

base 4: 3333333333333333 (16 chars)

base 3: 102002022201221111210 (21 chars)

base 2: 11111111111111111111111111111111 (32 chars)

 

base 10: -1 (2 chars)

base 9: 12068657453 (11 chars)

base 8: 37777777777 (11 chars)

base 7: 211301422353 (12 chars)

base 6: 1550104015503 (13 chars)

base 5: 32244002423140 (14 chars)

base 4: 3333333333333333 (16 chars)

base 3: 102002022201221111210 (21 chars)

base 2: 11111111111111111111111111111111 (32 chars)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有