Fix assumption that EOF==-1 in 2015/schweikhardt

The author stated EOF must be -1 but this is, as the author even noted,
not guaranteed by the standard (it just has to be a value < 0).

But rather than add C pre-processor directives to force EOF to be -1
(preferred over changing EOF to -1 in the code) the Makefile does (after
${CFLAGS}) -UEOF -DEOF=-1 so as to not have to modify the code any.

A few fixes in the README.md file.

This should complete this entry, leaving just (I think) 2015/endoh1.
This commit is contained in:
Cody Boone Ferguson committed 2023-12-10 05:25:02 -08:00
1 parent 0335c04e15
commit 3a1c9da50a
3 files changed
+15 -3

No files matched your search

+1 -1
View File
@@ -129,7 +129,7 @@ all: data ${TARGET}
sandwich supernova deep_magic magic charon pluto
${PROG}: ${PROG}.c
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
${CC} ${CFLAGS} -UEOF -DEOF=-1 $< -o $@ ${LDFLAGS}
# alternative executable
#
+8 -1
View File
@@ -24,6 +24,9 @@ For more detailed information see [2015 schweikhardt in bugs.md](/bugs.md#2015-s
where n is a base 16 number of any size.
NOTE: although it's supposed to be a base 16 number nothing will stop you from
doing something else. The author explains this in more details.
### Try:
@@ -31,6 +34,10 @@ where n is a base 16 number of any size.
./try.sh
```
After running it once to see what commands are run, you might wish to run it a
second time and just hold down space to see a fun scroll of numbers especially
where zeroes move to the right.
## Judges' remarks:
@@ -445,7 +452,7 @@ In a certain way, the program is character set and encoding agnostic.
* The `EOF` macro from `<stdio.h>` must expand to `-1` since it is used
to decrement a pointer and do some other math.
None of the tools catches this one. The program self-protects against unusual
None of the tools catch this one. The program self-protects against unusual
systems with `#if EOF + __STDC__` followed by `#error goofy!`. In the rare event
your system is goofy, replace all `EOF` tokens with `(-1)` and remove the
`#error` directive.