天天看點

菜鳥級itoa的實作

歡迎指點(╹▽╹)

void itoa_1(long long number, char* string, int real)//正負數都可以
{
	long long tem = number;
	int residual = 0;
	if (number < 0)
		number = (-number);
	char* p = string + 95;//将指針指向數組尾部,預設是96位的
	do {
		residual = number % real;//求餘數
		number = number / real;//求商
		if (residual > 9)//如果大于9
		{
			*p-- = (char)(residual - 10 + 'a');
		}
		else
		{
			*p-- = (char)(residual + '0');
		}
	} while (number > 0);
	if (tem < 0)//如果所求值位負數,則執行以下代碼
	{
		for (int i = 0; i < 96; i++)
		{
			if (string[i] == '0')
				string[i] = '1';
			else
				string[i] = '0';
		}
		string[95] = (char)(string[95] + 1);
		for (int j = 95; j > 0; j--)
		{
			if (string[j] == '2')
			{
				string[j] = '0';
				string[j - 1] = (char)(string[j - 1] + 1);
			}
			else
				break;
		}
		string[0] = '1';
	}
}
           

繼續閱讀