‘\n’ 换行符

不同计算机上c语言统一规定为:
文本文件的行结束符一律变成一个符号LF,也就是换行符,也就是new line符, 也就是'\n'.
“回车和换行符转换成一个换行符”-- 对PC机而言,文本文件行结束符,CRLF读入后,丢掉CR,留   LF.
例如fgets() 读入一行,行尾只有LF,没有CR.

换行(\n)就是光标下移一行却不会移到这一行的开头,回车(\r)就是回到当前行的开头却不向下移一行
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。 
在ascii中,回车和换行是不同的字符。0x0A是回车,即光标移动到本行的最左面; 0x0D是换行,即光标移动到下一行。 

在dos窗口中按回车键,其实是输入了两个字符0x0A,0x0D,对应到c中,就是\r(回车)\n(换行) 

在C语言中 
将 \n 存入文件 
window: 0d 0a 
unix: 0d 
如果不存到文件中,不会变。 
如果从文件中提取, 
windows: 0d 0a -> \n 
unix : 0d -> \n

但是我们平时按得Enter到底是回车还是换行,不太清楚?? 
看到一种说法:windows下enter是 \n\r,unix下是\n,mac下是\r 

\n是换行,英文是linefeed,ASCII码是0xA。 \r是回车,英文是carriage return ,ASCII码是0xD。

如果你有在windows下编程的经验就会发现windows下敲下回车键会产生两个字符CR和LF,用16进制编辑器打开windows下的文本文件也会看到换行是0D和0A
表示的,也就是CR和LF的ASCII编码。而在UNIX类系统中换行只有一个字符LF,所以UNIX中的文本文件在windows中用记事本打开会出现不可解析字符且丢失
换行格式,所有字符连成一行。
因为windows下的记事本读到LF时不知道这就是换行(只有CR和LF连续出现才能解释为换行),于是当作不可打印字符处理,就是一个黑色方框。
CR和LF分别表示“回车”(carriage return)和“换行”(line feed),ASCII编码为13和10,在C语言中用\r和\n表示。
为什么windows下要用两个字符表示换行?这就是今天要讲的故事:《回车的传说》
在计算机刚刚诞生之时,广泛使用Teletype公司制造的一种古老的终端(console terminal)电传打字机ASR33。ASR33每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,打印头从行尾移到行首再下移一行要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失,那时可没有缓冲区暂存。Teletype的研究人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
在现今的电脑键盘上,“回车键”上曾使用过“CR”、“RETURN”的字样,后来才统一确定为“Enter”。

参照http://blog.csdn.net/adaptiver/article/details/7368451
http://blog.csdn.net/silyvin/article/details/7275037

### 回答1: 如果在写入 CSV 文件时,`\n` 换行符失效,可能是因为在打开 CSV 文件时没有设置 `newline` 参数。可以尝试在打开文件时设置 `newline=''` 来解决这个问题,这样就可以在 CSV 文件中正确地显示换行符了。修改代码如下: ``` with open(csv_name, 'w', newline='') as csvfile: writer = csv.writer(csvfile, quoting=csv.QUOTE_ALL) writer.writerow(['ts', 'dx','dy','motion','iqc','shutter','frame_avg']) while self.is_running: com_input = ser.readall() if com_input: com_input = str(com_input, 'utf-8') print(com_input) row = com_input.split(',') writer.writerow(row) ``` 这样就可以在 CSV 文件中正确地显示换行符了。 ### 回答2: 对于这个问题,可能是因为换行符的使用方式不正确导致失效。 在一些文本编辑器或软件中,换行符的使用方式是通过键盘上的回车/Enter键来实现的,即在想要换行的位置按下回车/Enter键即可。但是有些软件(比如HTML、CSS)或者操作系统(比如Windows、Linux、macOS)会有不同的换行符规范。 在HTML中,换行符需要使用特定的标签来进行换行,即使用"<br>"标签。所以,在使用HTML编写网页时,使用"br"标签能够实现换行效果。 在CSS中,可以利用"white-space"属性来控制换行的方式。常见的属性有"normal"、"pre"、"nowrap"等。"normal"表示使用软换行,即在英文单词之间换行;"pre"表示使用硬换行,无论是否有空格都会换行;"nowrap"表示不允许换行。通过设置这些属性,我们可以控制换行的方式。 至于操作系统,在终端或命令行界面中,使用不同的换行符规范。比如在Windows中,使用"\r\n"表示换行;而在Linux或macOS中,使用"\n"表示换行。 所以,以上提到的换行方式都是有效的,但需要根据不同的软件或规范来选择适当的换行方式。如果使用的换行符失效,可能是因为没有按照正确的方式来使用换行符导致的。可以尝试使用不同的换行方式,或者检查是否存在其他问题,比如文本编辑器的设置或者编码方式的问题。 ### 回答3: 在以上写法中,出现了换行符失效的情况。换行符一般用于在文本中进行换行操作,使得文本内容更加清晰易读。然而,由于不同的编程语言或编辑器使用的换行符不同,或者在特定环境下换行符可能不起作用,导致以上写法中出现了换行符失效的情况。 有几种可能的原因导致换行符失效。首先可能是使用了不支持换行符的编程语言或编辑器。例如,某些简单的文本编辑器可能没有对换行符进行特殊处理,导致输入的换行符被忽略或显示为其他字符。其次,可能是在特定的环境下,例如某些终端或命令行界面,不允许使用换行符进行换行操作,而是需要使用其他特定的命令或符号来实现换行效果。 解决换行符失效的方法取决于具体的情况。如果是在使用特定的编程语言或编辑器时出现换行符失效,可以尝试使用其他支持换行符的工具进行操作。如果是在特定的环境下出现换行符失效,可以尝试查找环境相关的文档或资源,了解如何在该环境下进行换行操作。 总之,换行符失效可能是由于不同的编程语言、编辑器或环境对换行符的处理方式不同导致的。需要根据具体情况找到适合的解决方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值