Wpis z mikrobloga

tag do czarnolistowania -> #majsterprogramowanie (będę często coś postował, bo zaraz sesja, a pisanie głupich programów mnie odstresowuje - nie studiuje informatyki)

DO RZECZY:

Zachciało mi się zrobić silnie metodą rekurencyjną:
http://pastebin.com/Wh8RuSjB

Program kończy działanie po linijce:

printf("Jesli chcesz kontynuowac nacisnij \"t\" \n");


Nie wiem dlaczego

#jezykc #naukaprogramowania
M.....S - tag do czarnolistowania -> #majsterprogramowanie (będę często coś postował,...

źródło: comment_RlBYEiDz08fssTPt56wqsA9qDv2TybJF.jpg

Pobierz
  • 18
  • Odpowiedz
@MajsterTS po poprzednim scanfie w buforze wciaz siedzi znak nowej lini,
wywal spacje, i po drugim scanfie wstaw printf("%d", znak); i zobacz w tablicy ascii co to jest :)
generalnie scanfem mozna majsterkowac sporo.
  • Odpowiedz
@MajsterTS: scanf("%d", &liczba) odczytuje liczbę jaką wprowadził użytkownik, ale w buforze(tu trafiają dane wprowadzone przez użytkownika w konsoli) pozostawia znak nowej linii(czyli to, co pojawia się gdy naciśniesz Enter).
Jeśli uruchomisz program, wprowadzisz "10" i naciśniesz Enter, to scanf "usunie" z bufora tylko "10", a w buforze pozostawi Enter(znak nowej linii). Jeśli po tym zrobisz scanf("%c", &znak), scanf od razu wczyta właśnie znak nowej linii(jako że %c wczytuje tylko jeden
  • Odpowiedz
@5z7k9:
a to tutaj:
while((getchar())!='\n')
można powiedzieć, że "zje" mi te '\n'?

Your getchar() != '\n' loop works because once you call getchar(), the returned character already has been removed from the input stream.


tak to rozumiem i z tego co wyczytalem lepiej zamiast scanf stosować fgets, prawda?

Jeszcze coś takiego znalazłem

It's perfectly appropriate to parse strings with sscanf (as long as the return value is checked)
  • Odpowiedz