基于atoi()与itoa()函数的内部实现方法详解

2014-08-04  来源:本站原创  分类:C 语言  人气:0 

本篇文章是对atoi()与itoa()函数的内部实现方法进行了详细的分析介绍,需要的朋友参考下

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

 #include "stdio.h"
#include "ctype.h"
#include "stdlib.h"
/*
Converts a character string into an int or long
将一个字符串转化为整数
*/
int my_atoi(char s[])
{
 int i,n,sign;
 for(i=0;isspace(s[i]);i++);   //跳过空白
 sign=(s[i]=='-')?-1:1;
 if(s[i]=='+'||s[i]==' -')     //跳过符号位
  i++;
 for(n=0;isdigit(s[i]);i++)
  n=10*n+(s[i]-'0');        //将数字字符转换成整形数字
 return sign*n;
}
/*
Converts an int or long into a character string
将一个整数转化为字符串
*/
void my_itoa(int n,char s[])
{
 int i,j,sign;
 if((sign=n)<0)    //记录符号
  n=-n;         //使n成为正数
 i=0;
 do{
  s[i++]=n%10+'0';    //取下一个数字
 }while((n/=10)>0);      //循环相除
 if(sign<0)
  s[i++]='-';
 s[i]='';
 for(j=i-1;j>=0;j--)        //生成的数字是逆序的,所以要逆序输出
  printf("%c",s[j]);
}
void main()
{
 int n;
 char str[100];
 my_itoa(-123,str);
 printf("\n");
 printf("%d\n",my_atoi("123"));
 system("pause");
}
相关文章
  • 基于atoi()与itoa()函数的内部实现方法详解 2014-08-04

    本篇文章是对atoi()与itoa()函数的内部实现方法进行了详细的分析介绍,需要的朋友参考下 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转 换为字符串的一个例子: atoi 把字符串转换成整型数 itoa 把一整数转换为字符串 #include "stdio.h" #include "ctype.h" #include "stdlib.h" /* Converts a

  • PHP 基于Yii框架中使用smarty模板的方法详解 2014-08-15

    本篇文章是对在Yii框架中使用smarty模板的方法进行了详细的分析介绍,需要的朋友参考下 第一种方法按照YII系统的办法生成视图觉得有点麻烦,觉得用smarty更省事.尝试着把smarty模板加进来了. date_default_timezone_set("PRC"); class PlaceController extends CController { protected $_smarty; function __construct(){ parent::__construct(

  • 基于App自适应draw9patch不失真背景的方法详解 2014-02-24

    本篇文章是对App自适应draw9patch不失真背景的方法进行了详细的分析介绍.需要的朋友参考下 这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1.背景自适应且不失真问题的存在 制作自适应背景图片是UI开发的一个广泛问题,也是界面设计师渴望解决的问题,我相信我们彼此都深有体会. 比如,列表的背景图一定,但是列表的高度随着列表数据项会发生变化:标题栏的背景,无论横屏还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题. 根据以往的

  • 基于PHP服务端图片生成缩略图的方法详解 2014-03-17

    本篇文章是对PHP服务端图片生成缩略图的方法进行了详细的分析介绍,需要的朋友参考下 <?php //定义缩略图片尺寸 $picSize = array( '100_100'=> 1, '200_100'=> 1 ); $imagePath = "../image/"; function parseUrl($url){ preg_match("/(?P<name>[\w\d]+)_w(?P<width>\d+)_h(?P<heig

  • 基于.NET BitmapImage 内存释放问题的解决方法详解 2015-02-02

    本篇文章是对.NET BitmapImage 内存释放问题的解决方法进行了详细的分析介绍,需要的朋友参考下 网上查到的代码,多数的写法使用MemoryStream来实现: new Thread(new ThreadStart(() => { var bitmap = new BitmapImage(); bitmap.BeginInit(); using (var stream = new MemoryStream(File.ReadAllBytes(...))) { bitmap.Stream

  • atoi和itoa函数的实现方法 2013-11-09

    本文介绍了,atoi和itoa函数的实现方法,需要的朋友可以参考一下 //atoi的实现 #include<iostream> using namespace std; int atio1(char *s) { int sign=1,num=0; if(*s=='-') sign=-1; s++; while((*s)!='') { num=num*10+(*s-'0'); s++; } return num*sign; } //itoa的实现 复制代码 代码如下: char *itoa(in

  • 深入理解atoi()与itoa()函数的用法 2014-05-02

    本篇文章是对atoi()与itoa()函数的用法进行了详细的分析介绍,需要的朋友参考下 itoa()函数的原型为: char *itoa( int value, char *string,int radix); itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转换数字时所用的基数.在例中,转换基数为10.10:十进制:2:二进制... itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf. 是

  • BarCode条形码基于C# GDI+ 的实现方法详解 2015-04-13

    本篇文章介绍了,BarCode条形码基于C# GDI+ 的实现方法详解.需要的朋友参考下 条形码在生活中的应用非常广泛,具体的条形码知识大家自行百度,了解条形码知识对理解下面的代码是必要的.如果只是应用的话,直接拿去就可以用了. 废话不多说,上代码 public Bitmap GetCode39(string sourceCode) { int leftMargin = 5; int topMargin = 0; int thickLength = 2; int narrowLength = 1

  • php fscanf()函数使用方法详解 2010-06-08

    php fscanf()函数使用方法详解 Definition and Usage 定义和用法 The fscanf() function parses the input from an open file according to the specified format. fscanf()函数的作用是:从文件中按照指定的格式输入. Syntax 语法 fscanf(file,format,mixed) Parameter参数Description描述 fileRequired. Speci

  • PHP 函数call_user_func和call_user_func_array用法详解 2014-09-11

    下面来和大家分享一下这个call_user_func_array和call_user_func函数的用法,另外附赠func_get_args()函数和func_num_args()函数,嘿嘿!! call_user_func函数是当需要动态调用函数时,才使用的,这个函数有两种用法: 第一种是调用孤独的函数: <?php function funa($b,$c) { echo $b; echo $c; } call_user_func('funa', "111","222

  • 基于jquery ajax 用户无刷新登录方法详解 2014-12-26

    ajax俗称无刷新登录或局部刷新登录,这样可以提高用户体验了,文章讲到了关于基于jquery ajax用法返回数据与实例2用户无刷新登录 Ajax框架就是提供模块化实现Ajax功能的集合,Ajax框架可以是各种语言实现的(比如SAJAX有各种语言的实现),Ajax只是jquery中的一部分, 实例1 $.ajax({ type:'post',//可选get url:'action.php',//这里是接收数据的PHP程序 data:'data='dsa',//传给PHP的数据,多个参数用&连接

  • 基于JavaScript实现继承机制之调用call()与apply()的方法详解 2013-12-20

    本文将介绍两种很类似于对象冒充的继承方式,即使用call()和apply()方法 call() 方法 call() 方法是与经典的对象冒充方法最相似的方法.它的第一个参数用作 this 的对象.其他参数都直接传递给函数自身.例如: function sayHello(sPrefix,sSuffix) { alert(this.name + "says" + sPrefix + sSuffix); }; var obj = new Object(); obj.name = "T

  • 基于Java内存溢出的解决方法详解 2014-01-30

    本篇文章是对Java内存溢出的解决方法进行了详细的分析介绍,需要的朋友参考下 一.内存溢出类型1.java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的内存,堆和非堆.堆是给开发人员用的上面说的就是,是在JVM启动时创建:非堆是留给JVM自己用的,用来存放类的信息的.它和堆不同,运行期内GC不会释放空间.如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成

  • JavaScript函数的4种调用方法详解 2014-02-13

    了解函数的调用过程有助于深入学习与分析JavaScript代码.本文是JavaScript高级这个系列中的第三篇文章,主要介绍JavaScript中函数的四种使用形式 在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造器形式.以及apply形式.这里所有的调用模式中,最主要的区别在于关键字 this 的意义,下面分别介绍这个几种调用形式. 本文主要

  • 基于PHP magic_quotes_gpc的使用方法详解 2014-03-06

    本篇文章是对PHP中magic_quotes_gpc的使用方法进行了详细的分析介绍,需要的朋友参考下 PHP magic_quotes_gpc主要是作用在WEB客户服务端的,它的作用时间是从请求开始,接下来我们将具体的为大家讲解它的使用方式. AD:我们今天要向大家介绍的是PHP magic_quotes_gpc的具体使用方法.大家都知道在PHP中一个特殊的函数魔术函数,它在引用的过程中只有在传递$_GET,$_POST,$_COOKIE时才会发生作用. •PHP函数preg_split的正确使

  • oracle求同比,环比函数(LAG与LEAD)的详解 2014-04-14

    本篇文章是对oracle求同比,环比函数(LAG与LEAD)进行了详细的分析介绍,需要的朋友参考下 Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率. CREATE TABLE salaryByMonth ( employeeNo varchar2(20), yearMonth varchar2(6), salary number ) ; insert into SALARYBYMONTH (

  • C++中用substr()函数消除前后空格的解决方法详解 2014-07-08

    本篇文章是对C++中用substr()函数消除前后空格的方法进行了详细的分析介绍,需要的朋友参考下 最近做了个题目,遇到了要将字符串前后空格消除的细节问题.在Java中好像有一个字符串函数为trim()可以消除字符串后的空格.对于c++,查了一下,可以引用一个c++标准库Boost,可以轻松解决,但要下载,设置环境变量,因而没去弄.当然还可以用正则表达式进行匹配,但似乎都大材小用.不如就用substr()函数,而且string有find_last_not_of,find_first_not_of

  • MySQL查询优化--调整内部变量的详解 2014-07-21

    本篇文章是对MySQL查询优化中的调整内部变量进行了详细的分析介绍,需要的朋友参考下 MySQL是如此的开放,所以可轻松地进一步调整其缺省设置以获得更优的性能及稳定性.需要优化的一些关键变量如下: 改变索引缓冲区长度(key_buffer) 一般,该变量控制缓冲区的长度在处理索引表(读/写操作)时使用.MySQL使用手册指出该变量可以不断增加以确保索引表的最佳性能,并推荐使用与系统内存25%的大小作为该变量的值.这是MySQL十分重要的配置变量之一,如果你对优化和提高系统性能有兴趣,可以从改变

  • PHP中uploaded_files函数使用方法详解 2014-07-31

    PHP uploaded_files函数的功能非常强大,希望通过这篇文章中介绍的内容能够帮助我们解决相关问题,提高我们对PHP语言的了解程度. 对PHP语言有些了解的朋友们都知道,它包含有功能强大的函数库.我们今天就一起来了解一下PHP uploaded_files函数的具体功能. 在早期的PHP版本中,上传文件很可能是通过如下的代码实现的: -- if (isset($_FILES['file'])) { $tmp_name = $_FILES['file']['tmp_name']; } i

  • 基于Android 错误信息捕获发送至服务器的详解 2014-08-01

    本篇文章是对Android中错误信息捕获发送服务器进行了详细的分析介绍,需要的朋友参考下 程序员最头疼的事情就是bug和debug.这次debug长达20天,搞的我心力交瘁.累,因为Android兼容性,不同手机会有不同的bug出来,而且很难复现,所以就上网找了下类似保存错误log到文件再上传到服务器,现把源码也共享出来.上传至服务器的代码我没加.相信大家都有现成的代码了. 先讲下原理,跟JavaEE的自定义异常捕获一样,将错误一直向上抛,然后在最上层统一处理.这里就可以获得Exception