[重写库函数]atoi

1. 若字符串开头是空格,则跳过所有空格,到第一个非空格字符,如果没有,则返回0.

2. 若第一个非空格字符是符号+/-,则标记isPositive的真假,这道题还有个局限性,那就是在c++里面,+-1和-+1都是认可的,都是-1,而在此题里,则会返回0.

3. 若下一个字符不是数字,则返回0. 完全不考虑小数点和自然数的情况,不过这样也好,起码省事了不少。

4. 如果下一个字符是数字,则转为整形存下来,若接下来再有非数字出现,则返回目前的结果。

5. 还需要考虑边界问题,如果超过了整形数的范围,则用边界值替代当前值

时间: 2025-01-05 05:50:34

[重写库函数]atoi的相关文章

库函数atoi()的实现

int atoi(const char *nptr); 如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整形数.否则,返回零. 这里需注意:如果字符串是非法输入:字符串为空,只有一个'+'或'-',非数字等返回的是整形数0:而如果输入是"0",返回的也是整形数0.对于这样的情况,atoi()是通过一个全局变量来区分的.还有一点:比如输入是"123abc",则atoi()也能正确执行,返回整形数12

【C语言】编写函数实现库函数atoi,把字符串转换成整形

//编写函数实现库函数atoi,把字符串转换成整形 #include <stdio.h> #include <string.h> int my_atoi(const char *src) { int flag=1; int sum=0; while (*src) { if (*src == ' ') src++; else if (*src == '+') { src++; flag = 1; } else if(*src == '-') { src++; flag = -1; }

标准库函数atoi的实现

标准库函数atoi用于将字符串类型的数据转换为整形数据:在转换过程中要考虑空指针.空字符串"".正负号,溢出等情况 这里是将字符串str转换为32位整型,其正数的最值为0x7FFFFFFF,负数的最小值为0x80000000(可参考有符号类型的最小负数的补码的由来),通过这两个值来判断是上溢还是下溢,此外,用一个全局变量来表明是否是非法输入的问题. 代码如下:(vs2010调试正确) 1 //实现atoi_32函数 2 //正数数的最大值为0x7FFFFFFF,最小值为0x800000

转载 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 

关于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[]) {

有趣的atoi()函数

atoi()函数是C语言库中的一个比较有意思的函数,有趣的地方在于,他可以将数字字符串转化为相应的数字,当然我们也可以通过字符间换算转化为相应数字,但有库函数atoi()使得代码简化许多.那么atoi()怎么用呢? 1.在c语言中直接包含在头文件stdlib.h头文件中,atoi()的形式参数为指针,所以要将字符串指针来传递.注意当atoi()读取到非数字字符时将会停止转换. 2.直接将string类型的字符串用char型指针进行指向即可.同样要包含头文件stdlib.h 3.c++中atoi函

字符串转化为整数的算法改进及优化

我们知道C语言有一个库函数atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数.那么如何实现这个函数呢? 很多同学很快会写出下列代码: int StrtoInt(char str[]) { assert(str); int num=0; while(*str) { num=num*10+*str-'0'; ++str; } return num; } 这个代码有没有什么漏洞呢?虽然用了assert来检查了空指针,但是,试想一下,如果我们传进去的字符串

字符串转换成整数

题目描述 输入一个由数字组成的字符串,把它转换成整数并输出.例如:输入字符串"123",输出整数123. 给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi. 分析与解法 基本思路为:从左至右扫描字符串,把之前得到的数乘以10,然后加上当前字符所表示的数字. 然而,我们需要考虑以下几个问题: 输入为空指针时 数字前面的正负号 非法的字符 整形溢出 前三个问题很容易解决,这里主要考虑整形溢出的问题.一般来说,当发生

字符串转换为整数”123“-&amp;gt;123

字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给定函数原型 int StrToInt(const char *str) .实现字符串转换成整数的功能.不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,因为为第一位.所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候