win linux 0d0a,彻底搞定0x0d和0x0a

本文详细介绍了在Windows和Linux环境下,0x0d(回车)和0x0a(换行)的区别,以及在编程中遇到的二进制写入问题。在Windows的Visual C++中,按下回车键会产生0x0d,而在Linux中敲击回车只会增加0x0a。通过实例演示了如何避免因回车换行差异导致的错误。
摘要由CSDN通过智能技术生成

彻底搞定0x0d和0x0a

发布时间:2008-10-07 21:26:26来源:红联作者:Inwind

什么是0x0d和0x0a,可能大部分人都知道是回车和换行字符,但那个是回车,那个是换行?估计很多人都一时说不清楚了---也许你不相信,那就调查下周围的同事吧,估计会包含以下字眼“大概。我记得。回车是0x0d吧”。这次我移植arm-linux C的程序,至VC++,发现了很多不同,尤其是这个回车换行浪费我一上午的时间,我决定借此机会彻底搞定他们,这两个令人讨厌的家伙。

先说下浪费我一上午的那个东西----教训是很重要的,希望大家不要重蹈我的覆辙----,在arm-linux下,写二进制文件,打开文件的时候 这样写就可以了fp_wthdisk = fopen(file_pathname,"w");,以w格式写就可以了。把这段程序移植到vc++后,发现一旦我向文件写入0x0a,前边就会自动加上0x0d,我以为是我写入数组的问题,反复检查也没有找到毛病,后来同事问我:“你是不是二进制格式写入的文件?”我说:“是呀,fwrite w格式,没有问题呀”,后来他说,你试试“wb格式写入一下”,改为wb后,果真就好了,厉害!,我对他竖起了大拇指。

看到这里,上边促使我下决心搞清楚回车换行的原因说完了。我想可能有人会犯同样错误的。但如果你对以下几个问题,都知晓了,就不必浪费时间,继续看下去了。

1.在Windows XP Visual C++下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值