I suspect we are saying the same thing. C is defined as an int (as Larry also showed), not an unsigned char (and frankly if you had done that, most modern compilers will give you a warning). IIRC you are correct that the Ritchie compiler would not catch that error. But, the truth is I know few C (experienced) programmers that would define c as anything but an int; particularly in the modern era with compiler warnings as good as they are. Clem On Fri, May 15, 2020 at 4:18 PM wrote: > EOF is defined to be -1. > > getchar() returns int, but c is a unsigned char, the value of (c = > getchar()) will be 255. This will never compare equal to -1. > > > > > > > > Ron, > > > > Hmmm... getchar/getc are defined as returning int in the man page and C is > traditionally defined as an int in this code.. > > > > On Fri, May 15, 2020 at 4:02 PM wrote: > > Unfortunately, if c is char on a machine with unsigned chars, or it’s of > type unsigned char, the EOF will never be detected. > > > > > > > > > - while ((c = getchar()) != EOF) if (c == '\n') { /* entire record is > now there */ > > > >