我们在使用printf进行打印时,基本都是使用n、r等控制字符,如:printf("helloworld!rn");你知道这n和r的区别吗?1、关于n和r在ASCII码中,我们会看到有一类不可显示的字符,叫做控制字符,它包括r、n等控制字符。n:换行符(newline),开始新的一行,对应ASCII值10(缩写:LF)。r:回车(return),返回到一行的开头,对应ASCII值13(缩写:CR)。回车换行来源:在计算机出现之前,有一种东西叫做电传打字机(TeletypeModel33),每秒可以打10个字符。但是它有一个问题,就是输入一行后需要0.2秒才能输入一个换行符,刚好可以输入两个字符。如果在这0.2秒内,传输了一个新字符,则该字符将丢失。因此,开发人员想了一个办法来解决这个问题,就是在每一行的末尾加上两个字符来表示结束。一种称为“回车”,告诉打字机将打印头定位在左边界;另一种称为“换行”,告诉打字机将纸张向下移动一行。这就是“换行”和“回车”的由来,从它们的英文名字就可以看出。2、n和r的区别后来计算机发明了,这两个概念就搬到了计算机上。当时内存很贵,有科学家认为每行末尾加两个字符太浪费了,只加一个。于是,分歧产生了。'r'为回车,'n'为换行,前者使光标移至行首,后者使光标下移一个空格。通常的回车是两个相加。一些编辑器只识别rn,而另一些则两者都识别。所以如果想要通用,换行最好用rn。在微软的MS-DOS和Windows中,“CR('r')”和“LF('n')”这两个字符被用作换行符;在Windows系统中,每行的结尾是回车+换行(CR+LF),即“rn”;在Unix系统中,每行末尾只有一个换行CR,即“n”;在Mac系统中,每行末尾是一个回车CR,即'r';所以我们平时写文件的回车符应该准确的叫做回车符和换行符;3、影响的一个直接后果是,如果在Windows中打开Unix/Mac系统下的文件,所有的文字都会变成一行;而Windows中的文件在Unix/Mac下如果启用,每行末尾可能会有一个额外的^M符号。如果在Windows上用记事本查看Linux中保存的文件,会出现黑点。这个应该很多人都看到过,比如Keil代码直接显示换行符:mutualconversionlinux下命令unix2dos是将linux文件格式转换成windows文件格式,命令dos2unix是转换windows格式为linux文件格式。使用FTP软件在不同平台之间传输文件时,在asciitextmode传输方式下,部分FTP客户端程序会自动转换为换行格式。此传输后文件的字节数可能会更改。如果不想ftp修改原文件,可以使用bin模式(binarymode)传输文本。在windows上运行的程序会生成一个CR/LF格式的文本文件,而在Linux上运行会生成一个LF格式的文本文件。
