alokacja pamieci

0

wczytac dane muszę wykorzystujac dynamicznie przydzielony fragment pamięci i musze iterowac uzywajac wskaznika.
Wejście:
On
ma
opaske

Wyjście:
nO
am
eksapo
Problem jest taki czy dobrze cos takiego robie ? Prosilbym o sprawdzenie

#include <iostream>
#include<cstring>

using namespace std;

void stringReverse(char *);

int main(void)
{
    char *str=new char[50];
    while(cin.getline(str, 99)){
    stringReverse(str); 
    cout << str << endl; 
    }
    return 0;
}

void stringReverse(char *cstr)
{
	int len = strlen(cstr);
    char swap;

    for (int i = 0; i < len/2; i++)
    {
        swap = cstr[i];
        cstr[i] = cstr[len-i-1];
        cstr[len-i-1] = swap;
    }
}

2
char *str=new char[50];
while(cin.getline(str, 99)){

alokujesz 50 bajtów a zaraz w następnej linijce twierdzisz że bufor ma 99 bajtów.

2

Alokujesz tablicę 50-cio elementową ale jesteś gotowy wczytać 99 znaków. To o 49 znaków za dużo.
W ciele pętli for możesz skorzystać z std::swap. Zaoszczędzisz parę linii a i kod będzie bardziej przejrzysty.
Tablica str nie jest zwalniana. W tym przypadku to nie błąd bo sam system operacyjny zwolni pamięć kiedy proces zostanie odładowany, ale nie wiem czy taka była Twoja intencja. Lepiej jednak takie rzeczy robić w sposób jawny.

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