EOF to stała zdefiniowana przy pomocy preprocesorowego makra #define w nagłówku <stdio.h>. Visual Studio pozwala bardzo szybko zerknąć do pliku stdio.h gdzie zobaczymy coś takiego:
#define EOF (-1)
EOF to stała przewidziana do zaznaczenia końca pliku (end of file):
FILE* f = fopen("empty.txt", "r");
char c = fgetc(f);
if (c == EOF) printf("kuniec\n");
c = fgetc(f);
if (c == EOF) printf("wciaz kuniec\n");
printf("%d\n", c);
getchar();
Ważna uwaga: EOF jest wczytywany gdy spróbujemy przeczytać poza plik, czyli np mamy plik, który ma 4 bajty, to EOF wczytamy dopiero gdy spróbujemy wczytać piąty bajt.
O ile mi wiadomo to do standardowego wyjścia nie ma nic, korzysta się z niego przy czytaniu z plików lub innych strumieni:
FILE* f = fopen("plik.txt", "r");
int c;
while ((c = getc(f)) != EOF)
putchar(c);
Gdyby warunek w pętli był dla Ciebie nieczytelny to dodam, że wyrażenie x = 5 zwraca 5, a wyrażenie (5) zwraca 5:
int c;
int x = (c = 5);