## EOF in C

Can anyone please explain what is EOF in C programming language.

Is it a value (numeric, character) or something else ??

While reading the book "The C programming language", by Ritchie I came across this term. The code was :

#include <stdio.h>
/* copy input to output; 1st version */
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}

Please, please explain. I am just a beginner in C programming language, not an expert. So please give an explanation I can understand ...

 PhysOrg.com science news on PhysOrg.com >> Hong Kong launches first electric taxis>> Morocco to harness the wind in energy hunt>> Galaxy's Ring of Fire

 Quote by physics kiddy Can anyone please explain what is EOF in C programming language. Is it a value (numeric, character) or something else ?? While reading the book "The C programming language", by Ritchie I came across this term. The code was : #include /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } } Please, please explain. I am just a beginner in C programming language, not an expert. So please give an explanation I can understand ...
Hello physics kiddy and welcome to the forums.

EOF is short for end of file.

Think of a file handle as an object that represents something you can either read stuff from, write stuff to, or read and write stuff to.

When we think of files, most of us think of files on our hard disk like the AVI movies, or MP3 files, or PDF documents. These are files, but in some platforms files relate to anything where input and output is concerned and this could include stuff from the keyboard, stuff sent and received from a network port and so. Since you are beginner just think that file means something that deals with getting input and output.

What the EOF function does is return a true value if the end of the file stream has been reached (no more input left to get) and returns false if there is still stuff to read.

So lets say you have a file that is 100 bytes in length and you open it at the very start. Your first getchar will get a byte and it will increment the file position to the 2nd character. When you get the 100th character the file position will then point to 101. But when you call EOF after getting the 100th character the EOF function will return true and you will get out of the loop, and you will stop reading from the file stream (the getchar command).

Hope that helps!

 What is file position ?? please explain

## EOF in C

please elaborate using some nice example ..

Mentor
 Quote by chiro What the EOF function does is return a true value if the end of the file stream has been reached (no more input left to get) and returns false if there is still stuff to read.
EOF is a constant, not a function, although there is a function named eof() in the ios class in C++.

A file can be thought of as a sequence of bytes. A file pointer indicates the position in the file at which the next byte tis o be read (for an input file) or written (for an output file).

There have to be millions of examples on the Web -- look 'em up.

 Quote by Mark44 EOF is a constant, not a function, although there is a function named eof() in the ios class in C++. A file can be thought of as a sequence of bytes. A file pointer indicates the position in the file at which the next byte tis o be read (for an input file) or written (for an output file). There have to be millions of examples on the Web -- look 'em up.
Yeah you are right: in this code posting.

But as a note to the OP, there are often function calls and not evaluations against constants that check for the EOF condition. If you open a file and get an actual handle you will have to supply the file handle to an EOF function to get whether we have an EOF condition and in this case, it is a function and not a simple comparison with a known constant.

Recognitions:
Homework Help
 Quote by physics kiddy Can anyone please explain what is EOF in C programming language.
EOF is a value, and is defined to be an integer -1 in stdio.h. Note that c in the example is defined as a integer, which could be 16, 32, or 64 bits, depending on the machine. The function getchar() normally returns an integer with only the last 8 bits set (the leading bits are zero), which represent a character. If it returns a -1, then that indicates the end of a file.

 Quote by rcgldr EOF is a value, and is defined to be an integer -1 in stdio.h. Note that c in the example is defined as a integer, which could be 16, 32, or 64 bits, depending on the machine. The function getchar() normally returns an integer with only the last 8 bits set (the leading bits are zero), which represent a character. If it returns a -1, then that indicates the end of a file.
When will it return -1 ??

Recognitions:
Homework Help
 Quote by rcgldr EOF is a value, and is defined to be an integer -1 in stdio.h. ... getchar() ... If it returns a -1, then that indicates the end of a file.
 Quote by physics kiddy When will it return -1?
If it's reading an actual file, it wil return -1 when it reads all of the data from the file. If it's reading from the keyboard, you'll have to type a special key to cause getchar() to return a -1. For CP/M and MSDOS, usually ctrl-Z would cause this (on older sytems, it was ctrl-D). I'm not sure about dos console windows in current versions of Windows or Unix.

 Quote by rcgldr If it's reading an actual file, it wil return -1 when it reads all of the data from the file. If it's reading from the keyboard, you'll have to type a special key to cause getchar() to return a -1. For CP/M and MSDOS, usually ctrl-Z would cause this (on older sytems, it was ctrl-D). I'm not sure about dos console windows in current versions of Windows or Unix.
Thanks, that worked. Now I understand what EOF is. But what is CP/M ? U see I am just a 9 grader and it's my hobby to learn C programming. And how can it read data from a file. I have not learned pointers yet. So, please don't go for some deadly definition. I noticed that pressing Ctrl + C also end the loop.... Thanks, Thanks again.

Mentor
 Quote by physics kiddy But what is CP/M ? U see I am just a 9 grader
CP/M is an operating system that fell out of use long before you were born.

http://en.wikipedia.org/wiki/CP/M

Recognitions:
 Quote by rcgldr If it's reading an actual file, it wil return -1 when it reads all of the data from the file. If it's reading from the keyboard, you'll have to type a special key to cause getchar() to return a -1. For CP/M and MSDOS, usually ctrl-Z would cause this (on older sytems, it was ctrl-D). I'm not sure about dos console windows in current versions of Windows or Unix.
LOL who else here is old enough to remember this poor-man's "text editor" in DOS.

Code:
> copy con myfile.txt
.... type in some stuff here ...
.... and finish with <ctrl-z>
>
BTW. This still works in the command window (console) of XP.

 What is this. I can't find any relation between this code u have put above and C programming language. What shall I do after I have a file "myfile.txt" ??

Mentor
 Quote by physics kiddy What is this. I can't find any relation between this code u have put above and C programming language.
Please refrain from "txt-speak." In the PF rules, which you agreed to when you got your account, it says (color emphasis added)
 In the interest of conveying ideas as clearly as possible, posts are required to show reasonable attention to written English communication standards. This includes the use of proper grammatical structure, punctuation, capitalization, and spelling. SMS messaging shorthand, such as using "u" for "you", is not acceptable.
 Quote by physics kiddy What shall I do after I have a file "myfile.txt" ??

Mentor
 Quote by uart LOL who else here is old enough to remember this poor-man's "text editor" in DOS.
Yeah, I do...
 Quote by uart Code: > copy con myfile.txt .... type in some stuff here ... .... and finish with > BTW. This still works in the command window (console) of XP.

Recognitions:
Gold Member