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.

ANSI C - Pętla while nie działa poprawnie

jigas 29 Sty 2015 23:03 564 4
  • #1 29 Sty 2015 23:03
    jigas
    Poziom 2  

    Cześć wszystkim, jestem nowym użytkownikiem forum.

    Uczę się programowania w języku ANSI C. Jest to moje pierwsze podejście do tematu, nigdy wcześniej nie programowałem. Korzystam z książki "Język C Programowanie" B. W. Kernighan, D. M. Ritchie.

    Otóż autor jako przykładowy program do zliczania wierszy prezentuje następujący kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Po kompilacji i uruchomieniu programu, widać, że pętla nie wywołuję funkcji printf. Według mnie zapis jest błędny i powinien wyglądać tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Przy takim zapisie pętla wywołuję funkcję printf ale jej rezultat jest inny od zamierzonego. Funkcja zamiast liczyć wiersze, przy wprowadzeniu dancyh, liczy pojedyńcze znaki i przypisuje każdemu znakowi tę samą cyfrę zaczynając od 0, na koniec dodając cyfrę która jest numerem wprowadzonego kolejno wiersza. Np.:
    Wejście->dom
    Wyjście->
    0
    0
    0
    1

    Próbowałem różnych zmian w kodzie, ale nie mogę dojść gdzie jest pies pogrzebany. Proszę o jakieś wskazówki.

    Pozdrawiam

    0 4
  • #2 29 Sty 2015 23:07
    -psiak-
    Poziom 32  

    <Ctrl-Z><Enter> - na kolejnym pustym wierszu.

    To po każdym wierszu będzie pokazywać licznik:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    1
  • #3 29 Sty 2015 23:57
    jigas
    Poziom 2  

    Twoja wersja działa, ale niezależnie jaką ilość wierszy zajmie jedno polecenie wejścia to jest ono liczone jako jeden wiersz. Czyli mam rozumieć, że znak "\n" jest równy "Enter", ale nie rzeczywistej ilości wierszy w oknie konsoli?

    Dlaczego wersja przedstawiona przez autora książki nie działała poprawnie?
    Czy kod jest poprawnie napisany?

    0
  • #4 30 Sty 2015 00:38
    -psiak-
    Poziom 32  

    Wersja autora działa poprawnie, wprowadzenie musisz zakończyć poprzez:
    <Ctrl-Z><Enter> - na kolejnym pustym wierszu.

    Zliczane są wiersze wejścia (nie wyjścia) może zacznij od podstaw operowania konsolą:
    - przekierowanie z i do plików
    - przekierowanie z wyjścia innych programów

    To ułatwi zrozumienie podstaw operowania tą konsolą z poziomu programu.

    1
  • #5 30 Sty 2015 00:57
    jigas
    Poziom 2  

    Zrozumiałem różnice między działaniem tych dwóch kodów. Wszystko jasne, dzięki wielkie za pomoc.

    0