A question about this has been asked here End of File (EOF) in C but it still doesn't completely solve my problem.
EOF
makes sense to me in any datastream which is not stdin
, for example if I have some data.txt
file, fgetc()
will read all the chars and come to the end of file and return -1
.
What I don't understand is the concept of EOF
in stdin
. If I use getchar()
, it will wait for me to enter something, so if there is NOTHING written, End of File, (EOF
) is not returned automatically?
So is it that only the user can invoke EOF
in stdin
by pressing Ctrl+Z?
If so then what are some of the uses of EOF
in stdin
? I guess it tells the program to continue reading until the user invokes end of file? is this it?
Thank you
so if there is NOTHING written, End of File, (EOF) is not returned automatically?
No, it's not. It should be sent by the user.
So is it that only the user can invoke
EOF
instdin
by pressing Ctrl+Z?
Yes, you can set the EOF
indicator for stdin
with a special key combination you can input in the console, for linux console that is Ctrl+D and for windows it's Ctrl+Z.
If so then what are some of the uses of
EOF
instdin
? I guess it tells the program to continue reading until the user user invokes end of file? is this it?
The use of it depends on whether you instruct the user to input the EOF
explicitly or not, for example, I think python
console will tell you something like Press Ctrl+D or type quit() to exit
.
And EOF
is not necessarily -1
it's a macro and you should always use it to test for the EOF
indicator. And more importantly EOF
is not a character, it's a special value that indicates that the End Of File indicator is set.
Also, getchar()
is equivalent to fgetc(stdin)
.