Witam, rozpocząłem naukę języka C wraz z książką "Język ANSI C" Autor: Ritchie & Kerningham. Obecnie czytam na temat "Wejście i wyjście znakowe" i nie mogę zrozumieć zasady działania funkcji getchar() i putchar(). Niby są to funkcje operujące na łańcuchach znakowych czyli zmiennej typu char. W książce zaprezentowano programu jak poniżej:
Kod: Zaznacz cały
#include <stdio.h>
int main()
{
int c;
c=getchar();
while(c != EOF) {
putchar(c);
c=getchar();
}
return 0;
}
Teraz dlaczego zmienną c autor użył jako typu int a nie char ? Po drugie mógłby mi ktoś wytłumaczyć tak szczegółowo zastosowanie i działanie funkcji getchar() oraz putchar() ? Czym jest ta zmienna EOF i jak ona działa, wiem że jest to koniec pliku czyli end of file. Ale rozumiem też że podając zmienną EOF program powinien zakończyć działanie. Jak wartość przechowuje EOF ? Po uruchomieniu programu mogę wpisać np. 'bla bla bla' i konsola wyświetli mi bla bla bla, ale wpisując nic program nie zakańcza działania, tak więc nie wiem czym jest ten 'EOF', ktoś wytłumaczy ? Mam na koniec dwa zadania, pierwsze z nich brzmi: Sprawdź, że wyrażenie getchar() != EOF może mieć wartość 0 lub 1. Nie wiem jak wykonać to zadanie. Następne to: Napisz program wypisujący wartość stałej symbolicznej EOF. I tutaj napisałem coś takiego:
Kod: Zaznacz cały
#include <stdio.h>
int main()
{
printf(EOF);
return 0;
}
Problem w tym, że program nie wyświetla nic, nie ma błędu żadnego ale na konsoli nie pojawia się żaden znak. Jeśli EOF to pusty znak czy coś, to wciskając enter w pierwszym programie powinien on zakończyć swoje działania ponieważ
a program nigdy nie kończy swojego działania (ten z pierwszego kodu). Ktoś coś napisze na ten temat tutaj - czyli getchar(), putchar() oraz EOF ?