c语言编程实现字符串向整数的转换(剑指offer)
2016-11-29 20:49
441 查看
看到这道题的时候,哦,挺简单的,就开始着手去写。然而错了,其实并不是你想的那样。
对于这道题我们要考虑的情况:
字符串前面有空格
前面的‘+’‘-’
定义的int是否溢出
不合法情况eg:“-123de4”
对于这道题我们要考虑的情况:
字符串前面有空格
前面的‘+’‘-’
定义的int是否溢出
不合法情况eg:“-123de4”
#include <stdio.h> #include <Windows.h> #include <assert.h> #include <ctype.h> typedef enum STATE { VAILD, INVAILD }STATE; //定义一个枚举来标识合法与不合法状态 STATE state = VAILD; //刚开始为合法 int my_atoi(const char* str)// -12345 { assert(str); int flag = 1; int len = strlen(str); long long ret = 0; if (*str=='\0') //刚开始遇到‘\0’直接return 00 { return 0; } while (isspace(*str)) //处理空格的情况 { str++; } if (*str == '-') //遇到‘-‘将flag=-1 { flag = -1; str++; } if (*str == '+') { str++; } while (*str) { if (isdigit(*str)) { ret= ret * 10 + (*str - '0')*flag; //遇到数字依次累加 if ((ret > INT_MAX) || (ret < INT_MIN)) //判断是否溢出 { ret = 0; //溢出返回0 break; } str++; } else { state = INVAILD; //非法遇到的字符不是数字,返回0 ret = 0; break; } } return (int)ret; }
相关文章推荐
- c语言:模拟实现库函数的atoi函数,将字符串转换成整数
- 剑指offer——面试题49:不使用atoi库函数实现把字符串转换成整数
- 编程练习------C/C++分别实现字符串与整数的转换
- c语言实现,将一个字符串转换为对应的整数
- C语言实现 字符串转换为整数输出 int ascii_to_integer(char *str);
- 编程练习------C/C++分别实现字符串与整数的转换
- C语言实现把字符串转换成整数
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 编程实现整数和字符串的相互转换
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- c语言:模拟实现库函数的atoi函数,将字符串转换成整数
- C语言通过函数实现 itoa()的功能 将整数转换成字符串 并实现进制转换
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- c语言实现将一个整数转换为字符串
- 程序员编程艺术第三十~三十一章:字符串转换成整数,通配符字符串匹配
- 编程实现字符串转化为整数的办法
- java 实现将String字符串大写中文数字转换成int类型整数
- java中字符串处理、串联和转换的几个常用方法,以及如果需要自己编程实现的具体实施步骤。