Witam, rozpocząłem naukę języka ANSI C, właśnie czytam książkę "Język ANSI C" i dotarłem do rozdziału 1.5 Wejście i wyjście - kopiowanie plików, który zarazem stanowi dla mnie pewien problem. Nie do końca rozumiem funkcję getchar() oraz putchar(), dlaczego skoro w nazwie getchar() i putchar() powinno stosować się char to jednak stosują wszędzie takie zmienne jak int oraz long ? W książce, autor przedstawił poniższy przykład:
#include <stdio.h>
int main()
{
int c;
c = getchar();
while(c != EOF){
putchar(c);
c = getchar();
}
return 0;
}
Działanie ów programu wygląda tak, że co wpiszemy na konsolę to, to samo zostanie wyświetlone linię niżej, np. wpiszemy "bla bla bla" a niżej wyświetli się: bla bla bla. Program działa tak w nieskończoność z rozumiem, że fragment w pętli while:
c != EOF
mówi o tym, że zakończy on swoje działanie jeśli wprowadzona wartości będzie równa EOF. Sprawdziłem, że EOF wynosi -1. Nie wiem czy poprawnie to sprawdziłem. Ale powyższy program wyświetla również dla -1: -1 na konsoli i dalej pętla się toczy a program nie kończy. Nie rozumiem tego.
Na koniec tego rozdziału mam dwa zadania których kompletnie nie rozumiem i nie wiem jak rozwiązać:
- Sprawdź, że wyrażenie getchar() != EOF może mieć wartość 0 lub 1.
- Napisz program wypisujący wartość stałej symbolicznej EOF.
Proszę o trochę informacji rozświetlających dany temat, następne rozdziały to rozbudowywanie tego typu programów a więc stoję w kropce a chcę się nauczyć programować w C/C++. Z góry dzięki!