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 - Proszę o sprawdzenie kodu

marcisz3 28 Gru 2013 18:13 1119 9
  • #1 28 Gru 2013 18:13
    marcisz3
    Poziom 6  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    powinno wyświetlać dokładnie to co jest zadeklarowane w pętli for tymczasem nie wyświetla się nic. Podejrzewam że błąd jest w scanf lub w tablicy char, bo gdy deklaruję ja po prostu w programie wszystko działa jak należy. Niestety przy wczytywaniu liczby z klawiatury nie wyświetla się nic. Nie bardzo wiem jak to poprawić. Z góry dzięki za pomoc.

    0 9
  • #3 28 Gru 2013 18:33
    marcisz3
    Poziom 6  

    nadal nie działa

    0
  • #4 28 Gru 2013 18:42
    D12
    Poziom 14  

    Pierwszy błąd logiczny jest taki, że otrzymujesz wskaźnik do char, a ty porównujesz go int.

    Powinno to wyglądać miej więcej tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Tak to działa:
    Code:

    Podaj liczbę całkowitą
    -9871234
    Wektor ma dlugosc: 8
    minus       jeden lub cztery     jeden lub cztery

    0
  • #5 28 Gru 2013 18:59
    marcisz3
    Poziom 6  

    Działa, dziękuję :D

    0
  • #6 28 Gru 2013 20:29
    krru
    Poziom 32  

    marcisz3 napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod





    D12 napisał:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Dlaczego zmieniłeś poprawną deklarację tablicy na wskaźnik, w dodatku nigdzie nie allokując pamięci?

    0
  • #7 28 Gru 2013 20:37
    D12
    Poziom 14  

    No w sumie kompilator coś krzyczał :D

    Code:
    liczba.c: In function ‘main’:
    
    liczba.c:10:11: warning: ‘A’ is used uninitialized in this function [-Wuninitialized]
         scanf ("%s", A);
               ^


    ale wydawało mi się, że w funkcji scanf pamięć zostanie odpowiednio zaalokowana. Mylę się? W każdym razie, program działa i nie wywaliło żadnego Segmentation fault.

    Jeśli dobrze rozumiem to program sobie losowo zmieniał gdzieś pamięć? :) wiec powinno być jak już coś to:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #8 03 Sty 2014 14:38
    the_fifth_horseman
    Poziom 32  

    D12 napisał:
    ale wydawało mi się, że w funkcji scanf pamięć zostanie odpowiednio zaalokowana. Mylę się?
    Mylisz się. C jest - zaraz po asemblerze - ulubionym językiem klingońskich programistów: nie patyczkuje się ze słabymi i nie zaalokuje za ciebie pamięci.
    D12 napisał:
    Jeśli dobrze rozumiem to program sobie losowo zmieniał gdzieś pamięć? :) wiec powinno być jak już coś to:
    Kod: c
    Zaloguj się, aby zobaczyć kod
    Dokładnie tak.

    0
  • #9 07 Sty 2014 23:41
    mocarny66
    Poziom 10  

    Tak jak wspomniał *the_fifth_horseman o pamięć możesz być spokojny

    0
  • #10 11 Sty 2014 02:58
    bomkallo
    Poziom 11  

    A moze tak char *A = (char *) malloc(...) ?
    Przyjazniejsze oczom:)
    Sam sizeof byłby użyteczny, jeżeli w końcu char miałby więcej jak 1 bajt :P

    Jeden wątek już mi to rzucił na oko. Można mieć sporo warningow w przyszlości, jeżeli nie rzutuje się typów przy alokacji:P

    0