模拟实现atoi - 字符串中的数字字符转化为整形数

Posted 再吃一个橘子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟实现atoi - 字符串中的数字字符转化为整形数相关的知识,希望对你有一定的参考价值。

atoi函数

语法:

#include  < stdlib.h >  

int atoi(const char *str );

功能:

将字符串里的数字字符转化为整形数。返回整形值。

详细:

nt atoi(const char *str) 函数会扫描参数 str字符串,跳过前面的空白字符(例如空格,tab缩进)等,直到遇上数字或正负符号才开始做转换。而在遇到非数字字符串结束符(‘\\0’)才结束转换,并将结果返回。如果 str不能转换成 int 或者 str 为空字符串,那么将返回 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

关于atoi函数,知道这些就足够了。

模拟实现atoi函数

#include <stdio.h>
#include<stdio.h>
int StrToInt(char* str)
{
    long number = 0;
    int flag = 1;    //判断符号位  
    if (str == NULL)
    {
        printf("str is NULL\\n");
        return 0;
    }
    while (*str == ' ')  //空格  
    {
        str++;
    }
    if (*str == '-')    //符号位  
    {
        flag = -1;
        str++;   
    }
    while ((*str >= '0') && (*str <= '9'))//转化  
    {
        number = number * 10 + *str - '0';
        str++;
    }
    return flag * number;
}

int main()
{
    char* str = "-123456";
    //char* str = NULL;
    int tmp = StrToInt(str);
    printf("%d", tmp);

    return 0;
}

输出结果:-123456

以上是关于模拟实现atoi - 字符串中的数字字符转化为整形数的主要内容,如果未能解决你的问题,请参考以下文章

字符串转化为整数

模拟实现atoi函数

有趣的atoi()函数

atoi函数(将字符串转化为int)

高手请进!如何把整形数据转换为字符串(C语言)?

C# 中 将IP字符串转换为整型