From mboxrd@z Thu Jan 1 00:00:00 1970 From: dmr@plan9.bell-labs.com (Dennis Ritchie) Date: Sun, 9 Mar 2003 01:07:07 -0500 Subject: [TUHS] Why is \n 012? Message-ID: <7816891f511016bfdc584185f2a11bb3@plan9.bell-labs.com> Lehey wondered, > A thing that has puzzled me almost for ever is why the newline > character in C is 012 and not 015. Does anybody have any insight? And Haerr speculated > Well, my take on this is that C was developed with UNIX, > of course, and UNIX early on decided to use a single > character rather than a two-char (CRLF) sequence for > end-of-lines... This came via Unix from Multics. My Multics Programmers' Manual (1969) says, in reference to its use of the ASCII character set: "Reference: USA Standard X3.4-1967," and describes the LF character, with code octal 012, "New Line. Move carriage to the left edge of the next line.... ASCII LF is used for this function." I believe that either this or some other version of ASCII standard blessed (or condoned) one of the interpretations of the 012 character for the new-line function. However, I haven't turned up hard evidence of this, despite several conversations with Eric Fischer, who has kept track of various versions of the standards. In the event, various of the terminals used early on did implement the NL function. E.g. the IBM 1050 and 2741 terminals (decidedly non-ASCII) had a new-line function, like a typewriter, no CR, but sometimes an "Index" character that moved the paper but not the printing element. The TTY 37 had an optional interpretation of 012 as NL. Of course, other terminals required separate CR and LF characters. The choice of a single character to separate lines still seems wise if you're using a byte-stream model. Dennis