0
点赞
收藏
分享

微信扫一扫

模拟实现atoi

腊梅5朵 2022-04-13 阅读 66
c++c#

一 功能

转换。将字符类型的数字转换成整数类型的数字

二 声明与定义

int atoi (const char * str);

需要传入一个字符类型的指针,会返回int类型的值

三 特别注意的问题

1 如果传入的字符指针是空指针怎么办?-》assert

2 如果传入的字符串是空字符串怎么办?-》返回0

3 如果传入的字符串有空格怎么办?-》isspace判断,空格就跳过

4 如果传入的字符串有其他非数字类型的字符:比如字母怎么办?-》返回0

5 如何处理正负号?  -》定义一个flag,根据正负号赋值

四 函数的实现

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#include<assert.h>
#include<ctype.h>

int my_atoi(const char* str)
{
	assert(str);
	int flag = 1;
	long long n = 0;

	if (*str == '\0')
	{
		return 0;
	}

	while (isspace(*str))
	{
		str++;
	}

	if (*str == '-')
	{
		flag = -1;
		str++;
	}

	while (*str != '\0')
	{
		if (isdigit(*str))
		{
			n = n * 10 + *str - '0';
		}
		else
		{
			n = 0;
			break;
		}
		str++;
	}
	n = flag * n;
	return (int)n;
}

int main()
{
	char arr1[20] = "123456789";
	printf("%d\n", my_atoi(arr1));

	char arr2[20] = "    123456789";
	printf("%d\n", my_atoi(arr2));

	char arr3[20] = "a123456789";
	printf("%d\n", my_atoi(arr3));

	char arr4[20] = "-123456789";
	printf("%d\n", my_atoi(arr4));
}
举报

相关推荐

0 条评论