Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

EOF in C

  1. Oct 3, 2011 #1
    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 ...
     
  2. jcsd
  3. Oct 4, 2011 #2

    chiro

    User Avatar
    Science Advisor

    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!
     
  4. Oct 4, 2011 #3
    What is file position ?? please explain
     
  5. Oct 4, 2011 #4
    please elaborate using some nice example ..
     
  6. Oct 4, 2011 #5

    Mark44

    Staff: Mentor

    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.
     
  7. Oct 4, 2011 #6

    chiro

    User Avatar
    Science Advisor

    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.
     
  8. Oct 4, 2011 #7

    rcgldr

    User Avatar
    Homework Helper

    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.
     
  9. Oct 4, 2011 #8
    When will it return -1 ??
     
  10. Oct 4, 2011 #9

    rcgldr

    User Avatar
    Homework Helper

    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.
     
  11. Oct 4, 2011 #10
    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.
     
  12. Oct 4, 2011 #11

    jtbell

    User Avatar

    Staff: Mentor

    CP/M is an operating system that fell out of use long before you were born.

    http://en.wikipedia.org/wiki/CP/M
     
  13. Oct 4, 2011 #12

    uart

    User Avatar
    Science Advisor

    LOL who else here is old enough to remember this poor-man's "text editor" in DOS. :blushing:

    Code (Text):

    > 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.
     
  14. Oct 4, 2011 #13
    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" ??
     
  15. Oct 4, 2011 #14

    Mark44

    Staff: Mentor

    Please refrain from "txt-speak." In the PF rules, which you agreed to when you got your account, it says (color emphasis added)
     
  16. Oct 4, 2011 #15

    Mark44

    Staff: Mentor

    Yeah, I do...
     
  17. Oct 4, 2011 #16

    DrGreg

    User Avatar
    Science Advisor
    Gold Member

    For "console" programs:
    • Ctrl+Z simulates "end of file" when your program treats the keyboard as its input file. The program then continues to do whatever should happen next after the EOF.
    • Ctrl+C causes the program to stop immediately.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: EOF in C
  1. To C or not to C (Replies: 31)

  2. C or C++? (Replies: 8)

Loading...