Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C - Prośba o sprawdzenie programu odwracającego kolejność łańcuchów

Jeling 16 Sty 2014 12:12 1032 4
  • #1 16 Sty 2014 12:12
    Jeling
    Poziom 6  

    Witam,

    Mam za zadanie napisanie programu odwracającego kolejność łańcuchów tekstu podawanych z wejścia. Program ma zapamiętywać wprowadzane dane wykorzystując stos implementowany jako listę.

    Oprócz tego mam zadane, że do przechowywania danych na liście należy wykorzystać strukturę zawartą zaraz na początku mojego kodu, a do czytania danych z wejścia należy użyć funkcji fgets.

    Udało mi się zrobić coś takiego. Nie wiem, jak wyświetlić wynik. Proszę o pomoc, o wskazanie, co robię nie tak...

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 4
  • #2 16 Sty 2014 20:38
    the_fifth_horseman
    Poziom 32  

    Po pierwsze,

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    Przekazujesz wartość wskaźnika buf do funkcji.
    W funkcji modyfikujesz wartość wskaźnika zamiast przepisać tekst do tablicy (co zrobisz funkcją sprintf() ).
    Po wyjściu z funkcji, wartość wskaźnika się nie zmieni bo zmieniona została tylko w zakresie funkcji.

    Po drugie,
    w pop() nie zwalniasz zaalokowanej na tekst pamięci.

    0
  • #3 16 Sty 2014 21:28
    Jeling
    Poziom 6  

    Ok, dzięki. Jestem jednak na tyle początkującym, że będę jeszcze potrzebował drobnej podpowiedzi.

    Czyli generalnie mam użyć tej funkcji pop, tylko ją zmodyfikować? Czy w funkcji main też mam coś zmienić?

    0
  • Pomocny post
    #4 17 Sty 2014 18:44
    the_fifth_horseman
    Poziom 32  

    Jeling napisał:
    Czyli generalnie mam użyć tej funkcji pop, tylko ją zmodyfikować?
    Tak.
    Cytat:
    Czy w funkcji main też mam coś zmienić?
    Tak. Potrzebujesz pętli która będzie wykonywała pop() i wyświetlała otrzymane ciągi tekstowe dopóki lista zawiera elementy.

    0
  • #5 22 Lut 2014 22:55
    Jeling
    Poziom 6  

    Dziękuję za pomoc. Program trochę pozmieniałem.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W sumie została mi tylko jedna, banalna rzecz, a mianowicie w funkcji main korzystam z buf[1] != '\0' aby program wiedział, kiedy użytkowni kończy wpisywanie danych. Czy istnieje inny sposób? Chciałbym uniknąć używania operatora przecinkowego.

    Będę też wdzięczny za dowolne inne uwagi - wskazówki, co można ewentualnie ulepszyć.

    0