基于atoi()與itoa()函數(shù)的內(nèi)部實(shí)現(xiàn)方法詳解
更新時(shí)間:2013年05月24日 12:00:11 作者:
本篇文章是對atoi()與itoa()函數(shù)的內(nèi)部實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
C語言提供了幾個(gè)標(biāo)準(zhǔn)庫函數(shù),可以將任意類型(整型、長整型、浮點(diǎn)型等)的數(shù)字轉(zhuǎn)換為字符串。以下是用itoa()函數(shù)將整數(shù)轉(zhuǎn) 換為字符串的一個(gè)例子:
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
將一個(gè)字符串轉(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
將一個(gè)整數(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'; //取下一個(gè)數(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
將一個(gè)字符串轉(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
將一個(gè)整數(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'; //取下一個(gè)數(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++實(shí)現(xiàn))沒有統(tǒng)一旋轉(zhuǎn)操作的問題
這篇文章主要介紹了關(guān)于AVLTree(C++實(shí)現(xiàn))沒有統(tǒng)一旋轉(zhuǎn)操作的問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02C語言實(shí)現(xiàn)歌手大獎(jiǎng)賽計(jì)分程序
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)歌手大獎(jiǎng)賽計(jì)分程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03