【13】编写实现atoi函数

简介: 题目:给定一个字符串,要求转成整数,不允许使用atoi或者其它类似库函数。 方案:实现这个函数并不难,但是要考虑以下几个问题            1.


题目:给定一个字符串,要求转成整数,不允许使用atoi或者其它类似库函数。

方案:实现这个函数并不难,但是要考虑以下几个问题

           1.考虑字符串为空指针的时候
           2.考虑字符串为空串
           3.考虑是否有+/-符号
           4.考虑是否有不合法的字符
           5.考虑结果是否会溢出

const int MAXN = 2147483647;
const int MIN = -2147483648;
bool isOk;

//atoi函数,不合法情况isOk为false,返回0
int StrToInt(char *string){
	if(string == NULL){ //空指针
	    isOk = false;
		return 0;
	}
	isOk = true;
	int len = strlen(string);
	//空串
	if(len == 0){
	    isOk = false;
		return 0;
	}
	//
	long long sum = 0;
	bool flag = false;
	//判断+和-符号
	if(string[0] == '+' || string[0] == '-'){
	     flag = true;
	}
	//求值
	for(int i = 0; i < len; i++){
		if(i == 0 && flag){ //如果是+和-符号
		    continue;
		}
		if(string[i] >= '0' && string[i] <= '9'){
		    sum = sum*10 + string[i]-'0';
		}
		else{
		    isOk = false;
			return 0;
		}
		if(sum > MAXN || sum < MIN){ //值溢出的情况
		    isOk = false;
			return 0;
		}
	}
	//有符号的时候处理
	if(flag){
		if(len == 1){
		    isOk = false;
			return 0;
		}
		if(string[0] == '-'){
		    sum *= -1;
		}
	}
	return (int)sum; //long long转int
}



目录
相关文章
|
8月前
|
C语言
【C语言】atoi函数的使用和模拟实现
本篇将介绍atoi函数的使用,通过实例讲解函数的使用方法,模拟实现atoi函数。
80 1
|
6天前
atoi函数的模拟实现
atoi函数的模拟实现
|
7月前
|
C语言
了解C语言中的atoi函数和模拟实现
了解C语言中的atoi函数和模拟实现
|
7月前
|
存储 Linux C语言
深入解析Linux环境下的sprintf()和printf()函数
在C语言中,`sprintf()`和`printf()`函数是用于格式化输出的两个重要函数。`sprintf()`函数将格式化的数据写入一个字符串,而`printf()`函数则将格式化的数据输出到标准输出。在Linux环境中,这两个函数被广泛应用于各种编程任务。本文将详细介绍这两个函数的用法,包括格式化字符串的语法和一些常见的使用场景。
301 1
|
8月前
|
API C语言
利用strstr与atoi的结合实现一个C语言获取文件中数据的工具
利用strstr与atoi的结合实现一个C语言获取文件中数据的工具
38 0
|
9月前
|
编译器 C语言
【C语言进阶】字符函数及字符串函数,带你掌握核心用法并模拟实现(1)——strlen,strcpy,strcmp
【C语言进阶】字符函数及字符串函数,带你掌握核心用法并模拟实现(1)——strlen,strcpy,strcmp
96 1
|
9月前
模拟实现atoi函数
模拟实现atoi函数
|
10月前
|
C语言
strcmp函数和strncmp函数【C语言】
strcmp函数和strncmp函数【C语言】
|
11月前
|
C语言
C语言模拟实现:atoi函数
库函数atoi的使用方法以及它的模拟实现的思路。
106 0
|
11月前
|
C语言 C++
C语言 atoi 函数解析
C语言 atoi 函数解析