Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

End of File in stdin

Tags:

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

like image 677
Mcs Avatar asked Jan 29 '15 13:01

Mcs


People also ask

How do you force EOF?

If you're at a terminal in a Unix-like system, hit Ctrl-D . In Windows, Ctrl-Z .

How do you stop a stdin input?

You can close STDIN by pressing Ctrl-d on Unix-like systems or Ctrl-z on Windows.

What is considered EOF?

The End of the File (EOF) indicates the end of input. After we enter the text, if we press ctrl+Z, the text terminates i.e. it indicates the file reached end nothing to read.

How do you stop input in terminal?

The two commands I know for exiting a running command input consumer are ctrl^d (suspend) and ctrl^c (stop).


1 Answers

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 in stdin 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 in stdin? 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).

like image 152
Iharob Al Asimi Avatar answered Oct 22 '22 06:10

Iharob Al Asimi