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
版權宣告:本文為博主原創文章,轉載請附上博文連結!