C 标准库 atoi 函数的实现
来源:互联网 发布:wps如何筛选excel数据 编辑:程序博客网 时间:2024/05/16 09:44
/* * atoi 是一个解析字符串的一个函数 * 可以将字符串解析为 int 类型 * 解决如下的问题: * 1 空白符 * 2 正号和负号 * 3 进制 * 4 溢出 */#include <cstdio>/*int atoi(const char *str) { char *p = (char *)str; int ret = 0; int retPre = 0; int over_flow = 1<<(sizeof(int)*8-1); int sign = 1; int base = 10; // 跳过空白符 while (*p==' ' || *p=='\t') { ++p; } // 判定符号 if (*p=='-') sign = -1, ++p; else if (*p=='+') sign = 1, ++p; else sign = 1; // 判定进制 if (*p=='0' && *(p+1)=='x' || *(p+1)=='X') base=16, p+=2; else if(*p=='0') base=8, ++p; else base = 10; while (*p != '\0') { retPre = ret; if ((*p>='0'&&*p<='7') || (base!=8&&*p>='8'&&*p<='9')) { ret *= base; ret += *p - '0'; } else if (base==16 && ((*p>='a' && *p<='f') || (*p>='A' && *p<='F'))) { ret *= base; switch (*p) { case 'a': case 'A': ret += 10; break; case 'b': case 'B': ret += 11; break; case 'c': case 'C': ret += 12; break; case 'd': case 'D': ret += 13; break; case 'e': case 'E': ret += 14; break; case 'f': case 'F': ret += 15; break; default: break; } } else { break; } // 溢出处理 if (sign==-1 && ret==over_flow) { break; } else if ((ret&over_flow)==over_flow) { ret = retPre; break; } ++p; } if (sign==-1) ret = -ret; return ret;}*/int atoi(const char *str) { char *p = (char *)str; int ret = 0; int sign; // 跳过空白符 while (*p==' ' || *p=='\t') { ++p; } // 判定符号 if (*p=='-') sign = -1, ++p; else if (*p=='+') sign = 1, ++p; else sign = 1; // 只处理十进制 while (*p>='0' && *p<='9') { ret *= 10; ret += *p - '0'; ++p; } if (sign==-1) ret = -ret; return ret;}int main() { printf("%d\n", atoi(" -2147483648002")); printf("%d\n", atoi(" -2147483650")); printf("%d\n", atoi(" 2147483647")); printf("%d\n", atoi(" 2147483648")); printf("%d\n", atoi(" 012")); printf("%d\n", atoi(" 10")); printf("%d\n", atoi(" 0xa")); return 0;}
0 0
- C 标准库 atoi 函数的实现
- atoi函数的C实现
- C++ atoi 函数实现
- C函数atoi,itoa的实现代码
- C语言atoi函数的实现
- 【练习题】【C】atoi函数的代码实现
- C语言中的atoi函数的实现
- C语言 atoi 函数的实现
- C 标准库 abs 函数的实现
- C 标准库 atof 函数的实现
- C 标准库 bsearch 函数的实现
- C 标准库 strcpy 函数的实现
- C 标准库 strcat 函数的实现
- C 标准库 strchr 函数的实现
- C 标准库 strcmp 函数的实现
- C 标准库 strcspn 函数的实现
- C 标准库 strlen 函数的实现
- C 标准库 strstr 函数的实现
- 电子或通信领域当前的主流技术及其社会调查需求报告
- 蓝桥杯 翻硬币(贪心)
- 写在博客之前的话——java程序员规划
- A20(emmc) 编译环境
- 欢迎使用CSDN-markdown编辑器
- C 标准库 atoi 函数的实现
- 2.1进程与线程
- B1048. 数字加密(20)
- 一段强大的shellcode
- 02python_basis
- C 标准库 abs 函数的实现
- char 与 wchar_t 的互相转化
- BestCoder Round #65 ZYB's Biology
- 抢单系统,秒杀发红包系统,秒杀的架构在设计过程中需要考虑到那些问题,需要应用到哪些技术?