Dynamiczna tablica typu char
Ostatnio zmodyfikowano 2015-11-11 15:05
Anim Temat założony przez niniejszego użytkownika |
Dynamiczna tablica typu char » 2015-11-11 12:36:05 cześć :)
Tak jak w temacie. Chcę zadeklarować tablicę dynamiczną dla char-ów, ale w taki sposób, że rozmiar tej tablicy zostanie odczytany z tekstu, który zostanie wprowadzony. hm. może lepiej na przykładzie:
//wprowadzenie tekstu :
char wyraz[50]; cin >> wyraz;
//[teraz chciałbym w jakiś sposób odczytać długość char] - pętla (?) czy istnieje jakaś funkcja to robiąca ?
char *wyraz_tab = new char[dlugosc];
Mam nadzieję, że rozumiecie o co mi chodzi. Czy można to zrobić w sposób prostszy - bo tutaj nie dość , że dwukrotnie deklaruję tablicę char, przy czym tablica dynamiczna jest w sumie bez sensu, skoro podałem już wyraz do zwykłej tablicy. Czy to jest w ogóle wykonalne? czy też od razu mam przerzucić się na stringi ? |
|
pekfos |
» 2015-11-11 13:08:39 Czy to jest w ogóle wykonalne? |
Ale co? Odczytanie długości tekstu? Masz do tego strlen(), chociaż i tak wiesz, że tekst nie będzie mieć więcej niż 50 znaków. W przeciwnym przypadku, twoje wczytywanie wyrazu ma niezdefiniowane zachowanie. |
|
Gibas11 |
» 2015-11-11 13:42:46 Dobrze rozumiem, że chcesz stworzyć tablicę o rozmiarze takim jaka jest długość ciągu znaków na wejściu? Jeżeli tak możesz rozwiązać to w ten sposób: char * y;
int i = 0; char c; do { char * tmp = new char[ i + 1 ]; strcpy( tmp, y ); y = tmp; cin.get( c ); y[ i++ ] = c; } while( c != '\n' );
y[ i ] = '\0';
Rozwiązanie nie jest idealne bo: 1. Realokuje pamięć co dodanie znaku. 2. Mało przejrzyste. 3. Za koniec ciągu znaków uznawany jest znak nowej linii. |
|
j23 |
» 2015-11-11 14:54:25 4. powoduje wyciek pamięci, co jest błędem.
|
|
Anim Temat założony przez niniejszego użytkownika |
» 2015-11-11 14:54:26 właśnie chodziło mi o coś takiego, jak napisał Gibas :) ale faktycznie to dość nieprzejrzyste :) chyba zostanę przy stringach :D
dziękuję za pomoc :) |
|
Gibas11 |
» 2015-11-11 15:05:36 @j23 Teraz zauważyłem ten durny błąd, dzięki. |
|
« 1 » |