I did say that it might not be a problem - I was just saying that the value of NULL is implementation defined; it doesn't have to be zero.This is not a problem. A plain 0 in a pointer context is treated as a null pointer. Other equivalent forms are treated the same way, such as the expression (!file) which is equivalent to (file != 0), which is a valid comparison against a null pointer.
C11 - 7.19 #3
C99 - 7.17 #3
C89 - 4.1.5
I was shocked as you when I learnt that I was making non-portable code by looking for !fp -