Linux系统与Windows系统中的回车与换行问题

本博客已迁往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系统中使用,这样容易产生问题。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值