Message-Id: <199707151142.HAA08622@delorie.com> From: "Finn Kettner, Post Danmark" To: DJGPP Mailing List Subject: EOF reached AFTER EOF and not AT EOF Date: Tue, 15 Jul 1997 13:43:00 +0200 MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk Hello gurus. I'm sorry about this question being more of a DOS/WINDOZE question than a GPP question, but it is primarily in GPP I would like to see the solution :-). When I use the cin.eof() function call, I will not get the propper answer when I have reached the end of file on stdin, but will first get it when I have (tried to) get() the next character AFTER the last, and thus have (tried to) read one character too many. If I get() the characters into a char variable, then the last read (the one past the EOF) will not impose any changes in the char variable (it keeps it's value). Is this normally DOS/WINDOWS behavier (I've stumpled on it in Access too - here I get a 0x00 character after the last in the file - even worse than no change), og am I doing something wrong??? I know that I can fix this by using if(cin.get(char)) but this is not generally a good idea, as I would then have read one character too many, when I haven't reached EOF (and have to put that character back into the buffer). EEGGG, I hope that this question was more or less understandable, and not too stupid :-). Maybe an example would help: ----starting examples program---- #include main() { char kar1; while (!(cin.eof())) cout << hex << (int) kar1 << kar1 <<" a character\n"; } ----ending examples program---- Just feed this program with a file '