Rot13 Unix Filter in C
While others may have more specific suggestions related to the code, here are my observations:


If you're writing this as a Unix filter, make it Unix-y: instead of calling a function rot13, perhaps call it caesar_cipher() and use \$n\$th rotation. This would follow the idea by which Unix systems are characterized: modularity.
With modularity: while in the modern age it is safe to assume most systems have contiguous a-z and A-Z character encoding, a solution which accommodates EBCDIC and other locales than C is worth considering.
Because you're writing a Unix filter, I would look at the source code for GNU implementations of Unix filters (ie head, tail, uniq) to see how they deal with operations on files and error handling (specifically what types of errors could occur with Unix filters).
Ensure you are correctly checking if files exist, permissions, etc. Referencing GNU utils is helpful here as well.
Prefer fputc() instead of fprintf(): you're just printing a character to a stream.


Those are my thoughts. Some of these things you may have already considered, but I hope this was helpful.