Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczna tablica typu char

Ostatnio zmodyfikowano 2015-11-11 15:05
Autor Wiadomość
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 ?
P-139920
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.
P-139921
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:
C/C++
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.
P-139925
j23
» 2015-11-11 14:54:25
4. powoduje wyciek pamięci, co jest błędem.

P-139930
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 :)
P-139931
Gibas11
» 2015-11-11 15:05:36
@j23 Teraz zauważyłem ten durny błąd, dzięki.
P-139932
« 1 »
  Strona 1 z 1