Using
CRLF as the
line separator is not
DOS-specific. Up until
Unix, this was the
standard for
ASCII-using
systems that treated
text files as
strings of
bytes (as opposed to, say,
record-based systems). For most
ARPANET and
Internet protocols, the line separator is and always has been the two-character CR-LF sequence. When
Unix and
C were introduced, they used a single character for
newline, for simplicity.
When the IBM PC and MS-DOS were introduced in the very early 80s, C and Unix were not yet the industry-dominating forces they would later become. It only made sense to have text files compatible with the major commercial operating systems. No one was writing programs for the PC in C: it was usually assembly, BASIC, or Pascal.
When C started being ported to non-Unix OSes, the incompatibility had to be bridged somehow. Thus C compilers for DOS and other OSes have two modes for files: binary and text. In text mode, "\n" was converted to "\r\n" before being written, and "\r\n" was converted to "\n" when read; thus a single byte could represent the newline in memory, yet the OS standard could be followed on-disk (and for terminal I/O).
There is no sense blaming either of Microsoft or IBM for the mistakes of others. They have made enough on their own.