All files are binary. That's the good news. All I/O is machine-specific, usually OS specific. Portability comes from the ability to PASS THE SOURCE CODE AROUND, not pass the executable around. Each implementation will require its own compiler and its own run-time libraries. That's the bad news.
Now, you talk about portability, but you really say it has to be 98SE. That isn't portable, that's specific. You will have to have a compiler that will support 98SE, and whose libraries are designed for 98SE (a FAT file system). I don't know of a free one that will meet those requirements. You may be able to get an old, used one (like VC++ 6.0, or the appropriate version of an old Borland compiler).