1. 程式人生 > >atoi函式的用法及用C語言實現ato

atoi函式的用法及用C語言實現ato

庫函式原型:

#inclue <stdlib.h>

int atoi(const char *nptr);

用法:將字串裡的數字字元轉化為整形數。返回整形值。

注意:轉化時跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時('/0')才結束轉換,並將結果返回。

例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *ptr1 = "-12345.12";
    char *ptr2 = "+1234w34";
    char *ptr3 = "   456er12";
    char *ptr4 = "789 123";
    int a,b,c,d;

    a = atoi(ptr1);
    b = atoi(ptr2);
    c = atoi(ptr3);
    d = atoi(ptr4);

    printf("a = %d, b = %d, c = %d, d = %d/n", a,b,c,d);

    return 0;
}

輸出結果:a = 12345, b = 1234, c = 456, d = 789

***************************************************

不呼叫庫函式用C語言實現atoi函式的功能:

#include <stdio.h>
#include <stdlib.h>

int my_atoi(const char *str);

int main(int argc, char *argv[])
{
    char *ptr = " 1234 3455";
    int n;

    n = my_atoi(ptr);
    printf("myAtoi:%d/n", n);

    n = atoi(ptr);
    printf("atoi:%d/n", n);
    return 0;
}

int my_atoi(const char *str)
{
    int value = 0;
    int flag = 1; //判斷符號

    while (*str == ' ')  //跳過字串前面的空格
    {
        str++;
    }

    if (*str == '-')  //第一個字元若是‘-’,說明可能是負數
    {
        flag = 0;
        str++;
    }
    else if (*str == '+') //第一個字元若是‘+’,說明可能是正數
    {
        flag = 1;
        str++;
    }//第一個字元若不是‘+’‘-’也不是數字字元,直接返回0
    else if (*str >= '9' || *str <= '0') 
    {
        return 0;    
    }

    //當遇到非數字字元或遇到‘/0’時,結束轉化
    while (*str != '/0' && *str <= '9' && *str >= '0')
    {
        value = value * 10 + *str - '0'; //將數字字元轉為對應的整形數
        str++;
    }

    if (flag == 0) //負數的情況
    {
        value = -value;
    }

    return value;
}

 
--------------------- 
作者:xucongjiang 
來源:CSDN 
原文:https://blog.csdn.net/xucongjiang/article/details/5947194?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!