自己实现atoi的功能

整理思路:

#include <stdio.h>
int len(char *s)
{
    int len = 0;
    while (s[len])
    {
        len++;
    }
    return len;
}
int myPower10(int len)
{

    if (len == 0)
        return 1;
    if (len == 1)
        return  10;

    int power = 10;
    for (int i = 1; i < len; i++)
        power *= 10;
    return power;
}
int myCToInt(char c)
{
    c = c - ‘0‘;
    return c;
}

int myAtoi(char *s)
{
    int i, volue = 0,lens = len(s);
    for (i = 0; i < lens; i++)
    {
        volue += myCToInt(s[i]) * myPower10(lens - i - 1);
    }
    return volue;
}

int main()
{
    char a[] = "3321";
    int volue = myAtoi(a);
    printf("%d", volue);
    return 0;
}

运行:

3321

时间: 2024-10-05 10:28:39

自己实现atoi的功能的相关文章

C++ Studio (二) ----- atoi()函数的实现 (自己编写功能)

上一篇博客讲的是atoi()函数的功能及举例,现在呢,就自己写写代码(根据atoi()的功能)来表示atoi()函数的实现.我在这里先把atoi()函数的功能贴出来,也好有个参考啊~~~ atoi()函数的功能:将字符串转换成整型数:atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数). atoi()函数实现的代码: 1 /* 2 * name:xif 3 * coder:[

【C语言】模拟实现atoi函数

atoi(表示 ascii to integer)是把字符串转换成整型数的一个函数. atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回.如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回0 我们在模拟实现atoi函数时,要注意以下几点: 1.字符串之前的空白问题 2.正负号 3.字符串为空时 4.

关于atoi,itoa与itob的重写和字符统计

首先关于函数atoi的重写, atoi的功能是字符串能够转换为整数保存,仅仅针对于整数,浮点数以后会有写: //实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数. #include <stdio.h> #include <ctype.h> int main() { char st[50]; gets(st);  printf("%d",atoi(st)); return 0; } int atoi(char s[]) {

[leetcode]_String to Integer (atoi)

非常考虑思维全面性的一道题,考验是否能够考虑本问题的方方面面. 题目:将一个string转换为int.实现函数atoi()的功能. 先应该明确atoi()有哪些特殊功能:(正常的正负数情况我就不列了) input output "+1" 1 "   +   1"  0(error了) "       1" 1(前头只有空格是合法的) "12b45" 12(取前面的数字) 溢出 : "2147483648"(

【Leet Code】String to Integer (atoi) ——常考类型题

String to Integer (atoi) Total Accepted: 15482 Total Submissions: 106043My Submissions Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yours

转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现

C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. 字符串比较 - strcmp7. 计算字符串中的元音字符个数8. 判断一个字符串是否是回文1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s){    char temp, *end 

【LeetCode】008 String to Integer (atoi)

题目:LeetCode 008 String to Integer 题意:完成内置函数atoi的功能,将字符串转换成整数. 教训:一开始理所应当的随便一写,然后发现有很多的异常情况需要处理.然后按照C++ Reference中关于atoi的规定一条一条写,才AC.另外还有一个溢出的问题,一开始以为int会自动处理直接返回边界值,其实不是,如果溢出的话大于2147483647的数会给变成负数,因此要单独判断是否会大,但是设置成longlong 之后出现的问题是,还有可能会溢出longlong,所以

atoi 函数自实现

1 #include <stdio.h> 2 /* 3 编码实现字符串转整型的函数(实现函数 atoi 的功能).如将字符串"123"转化为 123, 4 "-0123"转化为-123 5 */ 6 int myatoi(const char *p) 7 { 8 int val = 0; 9 int sign; 10 while(*p == ' '||*p == '\t')p++; 11 if(*p == '-'||*p == '+') 12 { 13

算法笔试

1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向.   10  / \  6  14 / \ / \4  8 12 16 转换成双向链表4=6=8=10=12=14=16.  首先我们定义的二元查找树 节点的数据结构如下: struct BSTreeNode{  int m_nValue; // value of node  BSTreeNode *m_pLeft; // left child of