文章目录

    • 一、atoi函数的定义
    • 二、atoi函数的使用
    • 三、atoi函数的实现

一、atoi函数的定义

int atoi(const char* string)
库函数包含头文件<stdlib.h>

将字符串中的数字字符转换为int类型并返回

  1. 空字符返回0
  2. 数字字符前有空白字符跳过
  3. 数字字符前有+、-字符做整数的正、负处理
  4. 数字字符前有其他字符返回0

二、atoi函数的使用

#include<stdio.h>
#include<stdlib.h>

  int main()
  {
  	char arr1[] = "-21abv";
  	char arr2[] = "  -1234";
  	char arr3[] = "abc123";
  	char arr4[] = "";
  	printf("%d\n",atoi(arr1));
  	printf("%d\n",atoi(arr2));
  	printf("%d\n",atoi(arr3));
  	printf("%d\n",atoi(arr4));
  	return 0;
  }
 运行结果:
		     -21
		     -1234
		      0
		      0

三、atoi函数的实现

#include<stdio.h>
#include<assert.h>
#include<ctype.h>
enum state
{
	VALID,
	UNVALID
};
enum state status = UNVALID;

int my_atoi(char* str)
{
	//1.空指针
	assert(str);
	//2.空字符串
	if (*str == '\0')
		return 0;
	
	//3.空白字符(跳过)
	while (*str == ' ')
	{
		str++;
	}

	//4.+-
	int flag = 1;
	if (*str == '+')
	{
		str++;
	}
	else if (*str == '-')
	{
		flag = -1;
		str++;
	}
	
	long long n = 0;
	while (isdigit(*str))
	{
		n = n * 10 + flag*(*str - '0');
		//越界的值
		if (n > INT_MAX || n < INT_MIN)
			return 0;
		str++;
	}
	if (*str == '\0')
	{
		status = VALID;
		return (int)n;
	}
	return (int)n;
}
int main()
{
  	char arr1[] = "-21abv";
  	char arr2[] = "  -1234";
  	char arr3[] = "abc123";
  	char arr4[] = "";
  	printf("%d\n",my_atoi(arr1));
  	printf("%d\n",my_atoi(arr2));
  	printf("%d\n",my_atoi(arr3));
  	printf("%d\n",my_atoi(arr4));
  	return 0;
}
 运行结果:
		     -21
		     -1234
		      0
		      0

更多推荐

atoi函数的使用和实现