每日练习2-实现atoi函数

        atoi函数是将字符串转化为整型数的一个函数。

实现思路:

(1)遍历字符串,依次将字符数转化为整数;

(2)若当前字符为字符数字,就将其转化为整数;

(3)若当前字符不是字符数字,不管,指针后移,继续判定后面的字符

注意:

(1)最后我们得到的只有数字,没有任何字符,所以每次得到的数字都要+已转化好的数字*10,这样最后才会转化为一个整数。

(2)要注意字符串中是否带有正负号,要处理正负的问题。

下面直接贴代码:

#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int StrToInt(const char *str)
{
	assert(str);
	int num = 0;
	int flag = 1;
	int err = 0;
	char *p = (char *)str;
	while (*p != '\0')
	{
		if (*p == ' ')
		{
			p++;
		}
		else if(*p == '+')//正数
		{
			p++;
			flag = 1;
		}
		else if(*p == '-')//负数
		{
			p++;
			flag = -1;
		}
		else if(*p > '0' && *p < '9')//字符数转化为整数数字
		{
			int n = *p - '0';
			p++;
			num = (num * 10 + n);
			err = 1;
		}
		else
		{
			p++;
		}
	}
	if (err == 1)
		return flag*num;
	else
		return 0;
}

int main()
{
	char str1[] = "abcd";
	char str2[] = "1234";
	char str3[] = "-1234";
	char str4[] = "1234abcd";
	char str5[] = "123abcd456";
	printf("%s\n", str1);
	printf("%d\n", StrToInt(str1));
	printf("%s\n", str2);
	printf("%d\n", StrToInt(str2));
	printf("%s\n", str3);
	printf("%d\n", StrToInt(str3));
	printf("%s\n", str4);
	printf("%d\n", StrToInt(str4));
	printf("%s\n", str5);
	printf("%d\n", StrToInt(str5));
	system("pause");
	return 0;
}

运行结果为:


猜你喜欢

转载自blog.csdn.net/lycorisradiata__/article/details/80443806