atoi,itoi,atol,strtol, strtod函数转换

1、atoi函数

 atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。

/* 
* name:xif 
* coder:xifan@[email protected] 
* time:08.20.2012 
* file_name:my_atoi.c 
* function:int my_atoi(char* pstr) 
*/  
  
int my_atoi(char* pstr)  
{  
    int Ret_Integer = 0;  
    int Integer_sign = 1;  
      
    /* 
    * 判断指针是否为空 
    */  
    if(pstr == NULL)  
    {  
        printf("Pointer is NULL\n");  
        return 0;  
    }  
      
    /* 
    * 跳过前面的空格字符 
    */  
    while(isspace(*pstr) == 0)  
    {  
        pstr++;  
    }  
      
    /* 
    * 判断正负号 
    * 如果是正号,指针指向下一个字符 
    * 如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符 
    */  
    if(*pstr == '-')  
    {  
        Integer_sign = -1;  
    }  
    if(*pstr == '-' || *pstr == '+')  
    {  
        pstr++;  
    }  
      
    /* 
    * 把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer 
    */  
    while(*pstr >= '0' && *pstr <= '9')  
    {  
        Ret_Integer = Ret_Integer * 10 + *pstr - '0';  
        pstr++;  
    }  
    Ret_Integer = Integer_sign * Ret_Integer;  
      
    return Ret_Integer;  
}

2、itoa函数

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]); 
} 


你可能感兴趣的:(atoi,itoi,atol,strtol, strtod函数转换)