No, EOF is not a special character, lol :)
Take a look: http://www.cplusplus.com/reference/cstdio/EOF/
It is basically a macro:
End-of-File It is a macro definition of type int that expands into a negative integral constant expression (generally, -1). It is used as the value returned by several functions in header <cstdio> to indicate that the End-of-File has been reached or to signal some other failure conditions. It is also used as the value to represent an invalid character. In C++, this macro corresponds to the value of char_traits<char>::eof().
That means, the API try to read a line of file, get -1 and returns EOF. In contrast to EOF, the CR/LF are such special characters, you can see them in the HEX Editor if you have some line breaks:
'\n' or '0x0A' (10 in decimal) -> This character is called "Line Feed" (LF). '\r' or '0x0D' (13 in decimal) -> This one is called "Carriage return" (CR).
Apart of the files, there is a '\0' character on the end of the array of character in memory, it marks the end of the string. Without it, the computer has no way to know how long that group of characters goes. When you print/copy/whatever a string, it just keeps printing/copying chars until it finds that null char... that's when it knows to stop.
Maybe you mean this one NULL?