天天看点

atoi函数和itoa函数C代码实现

一、atoi函数实现

     1、atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数。

     2、C代码实现如下

#include <stdio.h>
#include <ctype.h>

/*atoi() function:convert string to integer*/
int atoi(char str[])
{
    int i = 0;
    int sign = 0;/*record the sign*/
    int n = 0;/*record the integer*/
    
    while(isspace(str[i]))i++; /*skip white space*/
    
    sign = (str[i] == '-')?-1:1;
    
    if((str[i] == '+') ||(str[i] == '-'))i++; /*skip sign*/
    
    while(isdigit(str[i]))
    {
        n = n*10 + (str[i] -'0');
        i++;
    }
 
    return n*sign;  /*return the integer value*/
}


int main(void) {
    
    char s[] = "-123";
    
    int n = 0;
    n = atoi(s);
    
    printf("integer = %d",n);
    
    return 0;
}
           

二、itoa函数实现

1、itoa函数通过把整数的各位上的数字加“0”转换成char类型并存到字符数组中。但是要注意,需要采用字符串倒置reverse函数处理下。

2、C代码实现如下

#include <stdio.h>
#include <string.h>

/*reverse函数:倒置字符串S中各个字符的位置 */
 void reverse(char s[])
 {
     int tmp = 0;
     
     for(int i = 0,j = strlen(s)-1; i < j; i++, j--)
     {
         tmp  = s[i];
         s[i] = s[j];
         s[j] = tmp;
     }
 }
 
 
 /*itoa函数,将数字转换为字符串并保存在S中 */
 void itoa(int n,char s[])
 {
    int i = 0;
    int sign = 0;

    if((sign = n) < 0)  //记录符号 
        n = -n;  //使n成为正数 
 
     do
     {
         s[i++] = n%10 + '0'; //取下一个数字 
         
     }while((n /= 10) > 0); //删除当前位上的数值 
     
     if(sign < 0)
        s[i++] = '-';
    
    s[i] = '\0';
    
    reverse(s);
 }
 

int main(void) {
    int n; 
    char s[20]; //save the string 
    n = -123;   // test input integer
    
    itoa(n,s);  //convert function
      
    printf("%s",s); //print the string 
    
    return 0;