金沙网址C++ 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]='\0'; 
   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"); 
}

相关文章