The OS just sets the guidelines how text should be represented and of course the OS tools enforce these guidelines. Now, there are some difficulties in this implementation. The default is unambigously specified as text mode by the ISO C language standard. I'd prefer to invest a little time in porting the code instead of investing a lot of time in users tweaking their system. This is done this way in all compilers that I know.
Some applications have a design problem here.
I can always convert DOS text files to Unix text and back again. I can not convert a garbled binary file back to it's original form. Let me add another nit to the problem. I am actually using not only Unix and DOS but also Mac files. This means not only that DOS files are read correctly but also that Unix files are automatically read correctly.