There is a "ASCII" EOF indicator.
It's called FS - file separator, value 0x1C.
There is also EOT - end of transmission, value 0x04, entered as ctrl-D under the Unix/Linux command line.
And, of course, PC-DOS/Windoze uses SUB - substitute, value 0x1a, entered as ctrl-Z, as it's command line end of file character.
So, pick one.....
The problem is that all of these are representable as ASCII codes which may quite reasonably appear in a binary data stream.
That's why the special token, EOF, is used in source code. The value of -1 is just handy and obvious.
Also, since ASCII is a seven bit code, it's still a useful value when used in 8-bit byte encoding. Probably not something that concerns you, though.
Did you observe that functions like getc() return integers? This keeps the -1 EOF value from conflicting with the 8 bit value 0xff, which may be valid in the data stream.
Does that help?