[c语言] 模拟实现c语言库函数atoi

来源:互联网 发布:淘宝新开店铺卖什么好 编辑:程序博客网 时间:2024/06/04 18:11

题目:模拟实现c语言库函数atoi

思路:模拟实现库函数atoi,要考虑几种特殊情况,1.空格问题 2.符号问题 3.异常(字母)4.数字太大,越界问题。


//使用c语言编写函数,将一个数字字符串转换为对应的数字//功能类似于库函数的atoi,考虑异常输入#include <stdio.h>  #include <string.h>  #include <assert.h>  #include <ctype.h> //isspace头文件#include<stdlib.h>int my_atoi(char const *p){int ret = 0;int a = 0;int flag = 1;assert(p != NULL);while (isspace(*p))  //isspace判断是否为空格{p++;}while (*p){if (*p == '+')p++;else if (*p == '-'){p++;flag = -1;}else if (*p >= '0'&& *p <= '9'){a = *p - '0';ret = (ret * 10 + a);p++;}elsereturn 0;//遇到输入异常的情况,就返回0,比如带有字母什么的。}//正数情况下,ret大于0x7FFFFFFF,或者负数情况下小于0x80000000就返回0if ((flag == 1 && ret > 0x7FFFFFFF) || (flag == -1 && ret < (signed int)0x80000000))return 0;return ret*flag;}int main(){printf("%d\n", my_atoi(" +2345"));printf("%d\n", my_atoi(" -2345"));printf("%d\n", my_atoi("+2345"));printf("%d\n", my_atoi("-2345"));printf("%d\n", my_atoi("2345"));printf("%d\n", my_atoi("2345"));printf("%d\n", my_atoi(""));printf("%d\n", my_atoi("123ab"));system("pause");return 0;}


1 0
原创粉丝点击