On 2/4/22 11:35 AM, Adam Thornton wrote:
On Thu, Feb 3, 2022 at 11:07 PM Ori Idan <ori(a)heliconbooks.com> wrote:
As for EOF it is 0xFF which is not always -1, depending if your
char is signed or unsigned.
Ha! You fell into my trap! getc() returns an int! (I don't know if
EOF is _always_ "all bits set", and even if it is, that's only -1 on a
twos-complement machine, if we want to head off into some real
pedantry...)
The need to use feof() and ferror() at least appear in the BUGS
section on my Mac. Linux is not so gracious. The real bug, if you
ask me, which no one did, is that getc() and pals return an int rather
than a char, which is surprising and certainly has tripped me up
several times across the decades (and yes, I understand that since any
character value is a legal character to have gotten, you need some
other way of signalling an error).
This is prolly why the authors steadfastly
refused to commit to a
particular value for EOF. Instead, they said in essence, that it was a
matter of agreement, convention, if you will, and that whatever value
was chosen, it should NEVER be a legal character. I made it -1, for v7,
cuz it worked... and I wanted so badly to get a working ratfor program
that I sacrificed any semblance of technical rigor to make it copy a
character, onscreen, in real time, live. Heck, and it only took me a
couple of days to figure out all how to get it working, EOF was easy,
STDIN and STDOUT, not so much.