彻底搞定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++下