Linux系统与Windows系统中的回车与换行问题
2013-03-22 09:47
316 查看
本博客已迁往http://coredumper.cn
首先定义两个名词:回车:回到当前行的开头却不向下移一行
换行:就是光标下移一行却不会移到这一行的开头
然后我们做几个实验:
在Linux系统下用gcc编译如下C源程序并执行生成的可执行文件,可以得到一个文本文件test.txt:
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; if((fp = fopen(“test.txt”,“a”)) == NULL){ printf(“cannot open file\n”); exit(0); } fputs(“asd\n123”,fp); fclose(fp); return 0; }
在Linux系统下打开test.txt,看到的结果如下:
asd
123
在Windows系统下打开test.txt,看到的结果如下:
asd123
用十六进制方式查看test.txt $ od –t x1 test.txt 得到如下结果:
61 73 64 0a 31 32 33
可以看到,在第一行的末尾、第二行的开头之间只有一个字符0a,即LF(换行符,C语言中的\n)
在Windows系统下创建一个文本test0.txt,文本的内容如下:
asd
123
将test0.txt在Linux系统下用十六进制方式查看,得到如下结果:
61 73 64 0d 0a 31 32 33
可以看到,在第一行的末尾、第二行的开头之间有两个字符0d 0a,即CR(回车符,C语言中的\r)和LF(换行符,C语言中的\n)
在Windows系统下用VC6.0编译运行如下C源程序,可以在d盘下得到一个文本文件test1.txt:
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; if((fp = fopen(“d:\\test1.txt”,“a”)) == NULL){ printf(“cannot open file\n”); exit(0); } fputs(“asd\n123”,fp); fclose(fp); return 0; }
在Windows和Linux系统下打开test1.txt,得到相同的结果如下:
asd
123
将test1.txt在Linux系统下用十六进制方式查看,得到如下结果:
61 73 64 0d 0a 31 32 33
综上:
C语言中统一用\n一个字符来完成回车和换行的功能,这是与操作系统无关的。
Windows系统中用\r\n两个字符完成回车和换行的功能。
Linux系统中用\n一个字符完成回车和换行的功能。
所以不要在Windows系统中编辑好文件之后,再上传到Linux系统中使用,这样容易产生问题。
相关文章推荐
- Linux系统与Windows系统中的回车与换行问题
- shell脚本兼容linux/unix与windows/cygwin的基础(注意处理好CR, LF, CR/LF 回车 换行的问题)
- shell脚本兼容linux/unix与windows/cygwin的基础(注意处理好CR, LF, CR/LF 回车 换行的问题)
- 关于linux和windows的CR, LF, CR/LF 回车 换行问题
- 关于linux和windows的CR, LF, CR/LF 回车 换行问题
- 利用VMware Tools 解决 RHEL 5 linux系统 与windows 共享问题
- linux和windows双系统互拷文件乱码问题
- Linux和Windows双系统带来的系统时间问题的解决详述
- ---利用Linux修复Windows系统问题中最聪明的十招方法
- mysql--出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法
- windows+linux16.04双系统时间不一致的问题
- svn_auth系统由windows迁移到linux下遇到的问题
- Linux/Windows/Mac OS中的回车与换行
- 转:LINUX/UNIX下的回车换行与WINDOWS下的区别
- windows 和linux 回车符号转换问题
- 解决linux下挂载windows的FAT32格式文件系统乱码问题
- 关于双系统linux和windows删除linux系统丢失系统引导的问题
- 研究Linux系统硬盘分区,并与Windows比较(未完,优先级问题没弄明白)
- mysql出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法
- 解决Linux和Windows双系统的引导问题