c函数itoa和atoi实现

#include <stdio.h>

int atoi( char *string)
{
	int sum = 0;
	int sign = 1;
	for (int i = 0; string[i] != '\0'; i++)
	{
		if (string[i] >= '0' && string[i] <= '9') //去掉一些特殊符号
		{
			sum = sum * 10 + (string[i] - '0');
		}
		if (i == 0 && string[i] == '-') //判断开头是不是负值
		{
			sign = -1;
		}
	}

	return sign*sum;
}

void itoa(int n, char *str)
{
	char *t = str; //缓存头指针 便于后面打印
	int temp = n;
	if (n < 0) //先判断正负
	{
		*str++ = '-';
		temp = -temp;
		n = -n;
	}
	
	int te = 1;
	for (; temp > 10; temp /= 10)
	{
		te *= 10;
	}

	for (; te >= 1; te /= 10)
	{
		
		*str++ = '0' + n / te;
		n = n % te;
	}

	*str = '\0';
	printf("%s\n", t);
}

int main()
{
	char string[20] = "-123&%45";
	printf("%d\n", atoi(string));

	char str[20];
	itoa(-123,str);
	cout << str << endl;

	system("pause");
	return 0;
}
发布了41 篇原创文章 · 获赞 1 · 访问量 2183

猜你喜欢

转载自blog.csdn.net/lpl312905509/article/details/104049742