| ▲ | foresto 3 days ago | |||||||
I'm pretty sure that conversion was done by the C library, just as stated in the article. Not by DOS. ASCII 0x0A '\n' is always one byte*, and C library implementations for DOS would insert an ASCII 0x0D '\r' byte before it at output time if the C FILE stream had been opened in text mode. Note that printf(), which you use in your example, is a C library function that writes writes to a predefined text mode stream. So it follows the same rules. I wasn't able to dig up the source code of a vintage DOS compiler's C library in a few minutes of looking, so I can't prove it right now, but this section of the C standard (7.21.2 - Streams) hints that my recollection is correct: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf#p... *(On systems where the char type is one byte, of course, which is the case for DOS C compilers.) | ||||||||
| ▲ | JdeBP 3 days ago | parent | next [-] | |||||||
I wrote a C Standard library for MS/PC/DR-DOS. Your recollection is correct. | ||||||||
| ||||||||
| ▲ | Isamu 3 days ago | parent | prev [-] | |||||||
Agreed, I didn’t mean that DOS somehow converted it, this was a compatibility feature put into the C library. | ||||||||