一、函數原型
兩個函數都在C語言裡的<stdlib.h>庫函數裡。
int atoi(const char *nptr);将字元串轉換為整型值。
char* itoa(int vulue,char *str,int base)itoa()函數有3個參數:第一個參數是要轉換的數字,第二個參數是要寫入轉換結果的目标字元串,第三個參是
轉移數字時所用的基數。比如10表示十進制,二表示二進制。
二、模拟實作
1、atoi() C++實作:
#include<iostream>
using namespace std;
int Atoi(const char* str)
{
int tmp=0;
const char* ptr=str;//ptr儲存str字元串開頭
if(*str=='-'||*str=='+')
{
str++;
}
while(*str!=0)
{
if((*str<'0')||(*str>'9'))
{
break;
}
tmp=tmp*10+(*str-'0');
str++;
}
if(*ptr=='-')
{
tmp=-tmp;
}
return tmp;
}
int main()
{
int n=0;
char p[10]="";
cin.getline(p,20);
n=Atoi(p);
cout<<n<<endl;
return 0;
}
2、itoa()C語言實作:
#include <ctype.h>
#include <stdio.h>
void itoa (int n,char s[]);
int main(void )
{
int n;
char s[100];
printf("Input n:");
scanf("%d",&n);
printf("the string : ");
itoa (n,s);
printf("\n");
return 0;
}
void 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]='\0';
for(j=i;j>=0;j--)//生成的數字是逆序的,是以要逆序輸出
printf("%c",s[j]);
}