Question:What’s the difference between
In particular, are there any practical differences between
\r? Are there places where one should be used instead of the other?
Best Answer:In terms of ascii code, it’s 3 — since they’re 10 and 13 respectively;-).
But seriously, there are many:
- in Unix and all Unix-like systems,
\nis the code for end-of-line,
\rmeans nothing special
- as a consequence, in C and most languages that somehow copy it (even remotely),
\nis the standard escape sequence for end of line (translated to/from OS-specific sequences as needed)
- in old Mac systems (pre-OS X),
\rwas the code for end-of-line instead
- in Windows (and many old OSs), the code for end of line is 2 characters,
\r\n, in this order
- as a (surprising;-) consequence (harking back to OSs much older than Windows),
\r\nis the standard line-termination for text formats on the Internet
- for electromechanical teletype-like “terminals”,
\rcommands the carriage to go back leftwards until it hits the leftmost stop (a slow operation),
\ncommands the roller to roll up one line (a much faster operation) — that’s the reason you always have
\n, so that the roller can move while the carriage is still going leftwards!-) Wikipedia has a more detailed explanation.
- for character-mode terminals (typically emulating even-older printing ones as above), in raw mode,
\nact similarly (except both in terms of the cursor, as there is no carriage or roller;-)
In practice, in the modern context of writing to a text file, you should always use
\n(the underlying runtime will translate that if you’re on a weird OS, e.g., Windows;-). The only reason to use
\ris if you’re writing to a character terminal (or more likely a “console window” emulating it) and want the next line you write to overwrite the last one you just wrote (sometimes used for goofy “ascii animation” effects of e.g. progress bars) — this is getting pretty obsolete in a world of GUIs, though;-).
If you have better answer, please add a comment about this, thank you!