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, botów: 0