I suppose you could use fseek on binary streams.How would you know that "there are exactly three characters to be read from the stream before the new line character", without making the use of gets redundant?
Why is it pointless? It's just more accurate to talk about functions being used in unsafe ways than it is to talk about functions being inherently unsafe. Many try to make that claim about strcpy and memcpy (eg. Microsoft To Banish Memcpy() - Slashdot), but obviously the issue is that people are just using those functions in unsafe ways, since they can definitely be used safely. It might not be useful to use gets safely, but it can certainly be done.In such a case, you might win the argument on a technicality, but the win would be pointless in reality.