回车和换行,以及不同软件对敲回车键的操作
来源:互联网 发布:windows阻止此软件 编辑:程序博客网 时间:2024/05/17 18:11
我一直以为回车和换行是一个东西,因为可以通过敲击回车键来达到换行的效果,于是就奇怪怎么回车\n
和换行\r
怎么会用两种不同的符号,分别对应两个ASCII码。现在总算搞明白了,参考文章。
回车和换行
回车(carriage return)原意为返回光标到本行开头,换行(new line)即在当前行下面建立一个新行,光标下移。
上一个例子说明回车和换行
printf("this is return \rthis is newline\ncan you see?");-------------output:this is newlinecan you see?-------------
从例子中可以看到\r
将光标移到行首,\n
建立新行
Linux和Windows对敲击ENTER键的反应
Ubuntu
我在ubuntu16.04下新建了一个名字为linux.txt的空文件,查看文件大小:0byte
然后我用gedit在ii.txt里面写入了一个字符i
,保存,然后返回查看大小:2byte
问题来了:这是为什么,一个字母不应该占据2个byte啊?
#include <stdio.h>int main(void){ FILE * fp; fp = fopen("/media/eureka/Azure/linux.txt", "r"); while(1) { char c; c = getc(fp); if (c == -1) { break; } printf("%d\n", c); } fclose(fp); printf("\n"); return 0;}-------output:10510-------
结论:linux会在你保存文本文件时在文本文件尾自动插入一个换行符\n
而下次再次对文件进行添加时是在这个文件尾换行符之前添加的。
Windows
再来看Windows,以下对文件的操作都是用记事本完成的。
在我的win10下新建一个文本文档a.txt,输入一个字母,大小为1byte
新建一个b.txt,打开文件,按一下ENTER键,保存退出,大小为2byte
新建一个c.txt,打开文件,输入一个字母,按一下ENTER,保存,大小为3byte
结论:在保存文件时,Windows不会在文本文件尾插入任何字符。但是windows下面按下回车键会插入两个字符,经验证为\r\n
当我在ubuntu下对a.txt文件追加了一个ENTER键之后,文件的大小变为3byte,这是正常的(敲击ENTER插入一个\n
然后linux自动在文件尾又插入一个\n
)。但是当我对b追加一个ENTER键时,文件大小变成了6byte,查一下结果是此次操作添加了两次\r\n
,推测这应该是linux检测到这是windows下的文件,而将后来要用到\n
的地方都换成了\r\n
,比如保存文件时自动插入的不再是\n
而是改成\r\n
经过后来的又一番折腾,发现对文件末尾进行插入这个操作是因编辑器而异的,教训:以后有些小事能放则放,程序员哪来那么多精力和时间。
- 回车和换行,以及不同软件对敲回车键的操作
- 回车换行的不同以及 转义字符和ASCII码值—(附ASCII码表)
- 不同系统下回车和换行的区别
- 回车和换行在不同操作系统的应用
- Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n
- Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\
- Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n
- Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n
- Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n
- Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n
- Windows、Unix、Mac不同操作系统的换行问题 回车符\r和换行符\n
- 不同平台回车换行的统一处理
- ABAP中操作回车、换行、回车加换行、的方案
- 回车和换行的区别
- 回车和换行的区别
- 回车和换行的区别
- 回车和换行的区别
- 回车和换行的区别
- Linux命令中ssh远程登录
- 小安的字典
- 2.1 1973确定进制
- 集成学习
- okhttp-utils
- 回车和换行,以及不同软件对敲回车键的操作
- eclipse中使用junit
- hdu1102——Constructing Roads(prim)
- hdoj-2005-第几天?(解题报告)
- 常见异常
- arm基础汇编指令小结
- LeetCode 200 Number of Islands(DFS)
- 设置root密码为“123456”后,直接连localhost密码为空可连,用123456连不上,为啥?
- 2017第八届蓝桥杯C/C++ B组省赛题解、答案