0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件代码中换行符和回车符的区别

strongerHuang 来源:strongerHuang 2023-12-06 09:24 次阅读

我们使用printf打印时基本都会用到 和 之类控制字符,比如:


printf("hello world!
");

那你知道这些 和 的区别吗?

关于 和

在ASCII码中,我们会看到有一类不可显示的字符,叫控制字符,其中就包含 和 等控制字符。

wKgZomVvzWKAPfj5AAGKTB9yakY908.png

: 换行符(newline),另起一行,对应ASCII值10(缩写:LF)。

: 回车符(return),回到一行的开头,对应ASCII值13(缩写:CR)。

回车和换行来源:

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意儿,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做"回车",告诉打字机把打印头定位在左边界;另一个叫做"换行",告诉打字机把纸向下移一行。

这就是"换行"和"回车"的来历,从它们的英语名字上也可以看出一二。

和 差异

后来,计算机发明了,这两个概念也就被搬到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

' '是回车,' '是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。

有的编辑器只认 ,有的编辑器则两个都认。所以要想通用的话,最好用 换行。

在微软的MS-DOS和Windows中,使用“回车CR(' ')”和“换行LF(' ')”两个字符作为换行符;

Windows系统里面,每行结尾是 回车+换行(CR+LF),即“ ”;

Unix系统里,每行结尾只有 换行CR,即“ ”;

Mac系统里,每行结尾是 回车CR 即' ';

所以我们平时编写文件的回车符应该确切来说叫做回车换行符;

影响

一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

Linux保存的文件在windows上用记事本看的话会出现黑点。这个应该很多人都看到过,比如,Keil代码中直接显示换行符:

wKgaomVvzWKAUsefAANjZfBL9Qw150.png

互相转换

在linux下,命令unix2dos 是把linux文件格式转换成windows文件格式,命令dos2unix 是把windows格式转换成linux文件格式。

在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化。

如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本。一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206738
  • 软件代码
    +关注

    关注

    0

    文章

    9

    浏览量

    6306
  • ASCII码
    +关注

    关注

    0

    文章

    43

    浏览量

    17245
  • Printf
    +关注

    关注

    0

    文章

    79

    浏览量

    13481

原文标题:软件代码中 和 的区别

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一个简单却不能忽视的换行符问题

    如图问题:请问第15行的换行符起什么作用?为什么有它没有它结果差别那么大?
    发表于 01-20 12:35

    labview 终止 回车 换行

    `求大神赐教,在labview 终止是 "回车" 加上 "换行"两个位终止的方式怎么实现,我要RS232通讯一台机器,机器的通讯发指令要以
    发表于 03-17 23:07

    51单片机和sim900a模块连接, 为什么一直AT握手指令不成功

    Send_ASCII("AT+CSCS=\"GSM\"");//GSM网络Send_Hex(0x0d);//发送回车符Send_Hex(0x0a);//发送换行符DelayMs
    发表于 07-19 19:28

    labview 如何处理Return键按下在输入框有换行符存在?

    户名和密码输入框还有换行符在,这样帐号密码就check不正确了,我的处理方法是把换行符都替换成空字符串,但是感觉在输入框有换行符在很别扭,请问labview有没用像C#一样有e.handled=ture这样的类似用法不处理该按键
    发表于 07-04 22:58

    字符串回车换行符的长度问题

    各位大神,我发现我的字符串控件,输入回车换行符时,长度只有一个字节,而不是两个字节,然后我将我输入的回车换行符通过串口发送出去,串口调试助
    发表于 05-12 12:07

    怎么在串口发送的数据中加上十六进制的回车换行

    因为我的下位机程序接收数据是以回车换行作为结束,但我不知道怎么在串口发送的数据中加上十六进制的回车换行符
    发表于 12-04 09:31

    Labview怎么删除数组元素内的换行符,请各位大神分享。谢谢了!

    Labview怎么删除数组元素内的换行符,已经搞定了,谢谢!
    发表于 01-21 11:00

    MINI板使用WIFI模块例程发现回车换行符不见了

    1.使用WIFI模块的例程,在发送测试数据给电脑上的网络调试助手,总是会有 0D 0A这样的换行命令出现,后来注释了LCD的显示函数Show_Str(),发现回车换行符不见了,而且是有一个
    发表于 02-13 00:53

    这段代码意思是不是当换行符输入时循环跳过?

    大家好,我想问大家while (getchar()!='\n') continue;这段代码意思是不是当换行符输入时循环跳过啊
    发表于 05-22 12:45

    Labview串口时候数据的0x0A与换行符冲突怎么解决?

    串口数据传输时候,含有0x0A与换行符冲突,如果关闭终止,那样就无法识别串口数据结束,无法识别换行了,请问下大家如何解决?
    发表于 12-06 21:33

    LabVIEW终止

    手册,确定应使用哪种终止和格式。回车符 回车(CR)将光标移动到行首,而不转到下一行。此字符在Commodore和早期Macintosh操作系统(Mac OS 9及更早版本)中用作
    发表于 04-24 20:13

    请问一下Java中平台无关的换行符是什么?

    Java中平台无关的换行符是?
    发表于 06-01 11:33

    WCHISPTool对于Hex文件的换行符支持哪几种?

    我这边需要使用代码修改模版HEX文件里的数据,以生成不同版本,不同配置的HEX文件。但是工具就回报”错误的文件#3“。搞了好几个小时才发现,WCHISPTool只支持windows式换行符CR+LF,不支持unix式换行符LF。
    发表于 08-22 07:10

    串口通信过程回车符是什么两个什么字节?

    串口通信过程回车符是什么两个什么字节
    发表于 10-12 06:15

    回车符的ascii码,回车键的ascii码是多少

    回车符的ascii码,回车键的ascii码是多少 回车符的ascii码,ASCII码13 换行符的ascii码,ASCII码10
    发表于 06-30 10:12 2.5w次阅读