基于atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法詳解
更新時間:2013年05月24日 12:00:11 作者:
本篇文章是對atoi()與itoa()函數(shù)的內(nèi)部實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下
C語言提供了幾個標(biāo)準(zhǔn)庫函數(shù),可以將任意類型(整型、長整型、浮點型等)的數(shù)字轉(zhuǎn)換為字符串。以下是用itoa()函數(shù)將整數(shù)轉(zhuǎn) 換為字符串的一個例子:
atoi 把字符串轉(zhuǎn)換成整型數(shù)
itoa 把一整數(shù)轉(zhuǎn)換為字符串
#include "stdio.h"
#include "ctype.h"
#include "stdlib.h"
/*
Converts a character string into an int or long
將一個字符串轉(zhuǎn)化為整數(shù)
*/
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'); //將數(shù)字字符轉(zhuǎn)換成整形數(shù)字
return sign*n;
}
/*
Converts an int or long into a character string
將一個整數(shù)轉(zhuǎn)化為字符串
*/
void my_itoa(int n,char s[])
{
int i,j,sign;
if((sign=n)<0) //記錄符號
n=-n; //使n成為正數(shù)
i=0;
do{
s[i++]=n%10+'0'; //取下一個數(shù)字
}while((n/=10)>0); //循環(huán)相除
if(sign<0)
s[i++]='-';
s[i]='\0';
for(j=i-1;j>=0;j--) //生成的數(shù)字是逆序的,所以要逆序輸出
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 把字符串轉(zhuǎn)換成整型數(shù)
itoa 把一整數(shù)轉(zhuǎn)換為字符串
復(fù)制代碼 代碼如下:
#include "stdio.h"
#include "ctype.h"
#include "stdlib.h"
/*
Converts a character string into an int or long
將一個字符串轉(zhuǎn)化為整數(shù)
*/
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'); //將數(shù)字字符轉(zhuǎn)換成整形數(shù)字
return sign*n;
}
/*
Converts an int or long into a character string
將一個整數(shù)轉(zhuǎn)化為字符串
*/
void my_itoa(int n,char s[])
{
int i,j,sign;
if((sign=n)<0) //記錄符號
n=-n; //使n成為正數(shù)
i=0;
do{
s[i++]=n%10+'0'; //取下一個數(shù)字
}while((n/=10)>0); //循環(huán)相除
if(sign<0)
s[i++]='-';
s[i]='\0';
for(j=i-1;j>=0;j--) //生成的數(shù)字是逆序的,所以要逆序輸出
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");
}
相關(guān)文章
關(guān)于AVLTree(C++實現(xiàn))沒有統(tǒng)一旋轉(zhuǎn)操作的問題
這篇文章主要介紹了關(guān)于AVLTree(C++實現(xiàn))沒有統(tǒng)一旋轉(zhuǎn)操作的問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02