Zamiana kodu C++ w kod C

0

Witam, przychodzę z prośbą o zamienienie poniższego kodu C++ w kod C, próbowałem już robić to na własną rękę, ale mam problemy z zamienieniem części new i delete na malloc i free. Oto kod:

unsigned int Wielokrotnosc(int _Wielokrotnosc, int _Liczba)
{
	unsigned int Liczba = 1;

	for (int i = 1; i < _Wielokrotnosc; ++i)
		Liczba *= _Liczba;
	
	return Liczba;
}

char ZamienNaZnak(int _Liczba)
{
	switch (_Liczba)
	{
		case 0: return '0';
		case 1: return '1';
		case 2:	return '2';
		case 3:	return '3';
		case 4:	return '4';
		case 5:	return '5';
		case 6:	return '6';
		case 7:	return '7';
		case 8:	return '8';
		case 9:	return '9';
		case 10:	return 'A';
		case 11:	return 'B';
		case 12:	return 'C';
		case 13:	return 'D';
		case 14:	return 'E';
		case 15:	return 'F';
		default:	return '\0';
	}
}

string Szesnastokwy(unsigned int _Liczba)
{
	if (_Liczba == 0) return "0";
	if (_Liczba == 1) return "1";

	unsigned int _Reszta = 0;
	unsigned short _Dzielnik = 0;

	for (unsigned int i = 1; i <= _Liczba; i *= 16)
		_Dzielnik++;

	int *Pozycja = new int[_Dzielnik];  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

	for (int i = 1; i <= _Dzielnik; ++i)
	{
		Pozycja[i - 1] = _Liczba / Wielokrotnosc(_Dzielnik - i + 1, 16);
		_Reszta = _Liczba % Wielokrotnosc(_Dzielnik - i + 1, 16);
		_Liczba = _Reszta;
	}

	string Liczba_szesnastkowa = "";  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

	for (int i = 0; i < _Dzielnik; ++i)
		Liczba_szesnastkowa += ZamienNaZnak(Pozycja[i]);
       
	delete[] Pozycja;  // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	return Liczba_szesnastkowa;
}
 

Oczywiście nie jest to całość programu, pomijam zbędne rzeczy. Ogólnie wiadomo że trzeba zamienić string na char*. Proszę o pomoc, jestem zielony jeśli chodzi o sposoby przydzielania pamięci w C, dlatego proszę o pomoc.
Z góry dziękuję za odpowiedź.
Pozdrawiam!

0

C++ to jest dokładnie to samo co C tylko dodana została obiektowość, a w Twoim kodzie nie ma żadnej obiektowości więc nic nie trzeba zmieniać.

0

new/delete na malloc/free albo tablicę typu VLA.

string na char*, ale to nie to samo, więc musisz kod przemyśleć i przeprojektować.

2

Proszę:

const char *Szesnastokwy(unsigned Liczba)
  {
   static char buf[16];
   sprintf(buf,"%X",Liczba);
   return buf;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1