函数atoi,itoa 的实现

本文介绍了两种基本的数据类型转换方法:整数转字符串(itoa)和字符串转整数(atoi)。通过详细的代码示例解释了每一步的实现过程,并考虑了正负数和前导空白字符的情况。

1.//整数转换成字符串itoa函数的实现

 

#include "stdafx.h"

#include <iostream>

using namespace std;

void itoaTest(int num,char str[] )

{

       int sign = num,i = 0,j = 0;

       char temp[11];

       if(sign<0)//判断是否是一个负数

       {

              num = -num;

       };

       do

       {

              temp[i] = num%10+'0';        

              num/=10;

              i++;

       }while(num>0);

       if(sign<0)

       {

              temp[i++] = '-';

       }

       temp[i] = '/0';

       i--;

       while(i>=0)

       {

              str[j] = temp[i];

              j++;

              i--;

       }

       str[j] = '/0';

}

 

 

2. //字符串转换成整数atoi函数的实现

 

int atoiTest(char s[])

{

       int i = 0,sum = 0,sign;    //输入的数前面可能还有空格或制表符应加判断

       while(' '==s[i]||'/t'==s[i])

       {

              i++;

       }

       sign = ('-'==s[i])?-1:1;

       if('-'==s[i]||'+'==s[i])

       {

              i++;

       }

       while(s[i]!='/0')

       {

              sum = s[i]-'0'+sum*10;

              i++;

       }    

       return sign*sum;

}

 

### C语言中 `atoi` 和 `itoa` 函数的定义、区别与使用方法 #### 定义 - **`atoi` 函数**用于将字符串转换成整数。该函数接收一个指向字符串的指针作为参数,并返回对应的整数值[^1]。 ```c int atoi(const char *str); ``` - **`itoa` 函数**则相反,它负责把整数转换为字符串表示形式。需要注意的是此函数并非C标准库的一部分,在某些编译器环境下可能不可用或需自定义实现[^4]。 ```c char* itoa(int value, char* string, int radix); ``` 这里 `value` 是待转换的整数;`string` 存储结果的位置;而 `radix` 表示目标基数(比如2代表二进制,8八进制,10十进制等)[^5]。 #### 使用实例 当需要执行简单的字符串到整数或是反过来的操作时,这两个函数非常方便: 对于 `atoi()` 来说, ```c #include <stdio.h> #include <stdlib.h> int main(){ const char* str = "123"; int num = atoi(str); // 将字符串"123"转化为整数123 printf("Converted number is %d\n",num); return 0; } ``` 而对于 `itoa()` ,由于不是所有环境都支持这个非标准化版本,则建议查看具体平台文档确认可用性或者考虑采用替代方案如`sprintf` 或者手动编写类似的逻辑来完成同样的任务[^2]。 ```c #ifdef _MSC_VER // 如果是在MSVC环境中 #include <cstdlib> // ...其他代码... char buffer[32]; itoa(-42,buffer,10); // 把-42按照十进制存入buffer数组中形成"-42" #else // 对于不提供itoa的情况下的处理方式 snprintf(buffer,sizeof(buffer),"%d",-42); #endif ``` #### 主要差异 两个函数的主要不同在于它们的作用方向上——一个是解析给定字符序列并尝试解释其作为一个有效的整数表达式[^3],另一个则是构建一个新的字符序列用来描述指定的整数值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值