标题:win7 32位下用codeblocks编译和linux下用gcc的结果不一致
只看楼主
woshiydp
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-2-3
结帖率:0
已结贴  问题点数:20 回复次数:7 
win7 32位下用codeblocks编译和linux下用gcc的结果不一致
for (i=0; i < HEIGHT_BG;i++) {
                for (j=0; j < WIDTH_BG;j++) {
            fwrite(&y[i][j],1,1,FP_FM0);
            printf ("y[%d][%d] = %x\n", i, j, y[i][j]);
                }
            }
当y [i][j]==0x0a 时,printf打出来的0x0a,输出到二进制FP_FM0文件时,就变成了0x0d0x0a,多出来一个0x0d,不知道怎么回事,linux下用gcc则正常。
搜索更多相关主题的帖子: linux 二进制 
2014-02-03 20:30
woshiydp
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-2-3
得分:0 

如图,左边是FP_FM0文件,右边是期望的结果。
2014-02-03 20:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:10 
是操作系統不同的原因

授人以渔,不授人以鱼。
2014-02-03 20:58
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:10 
Windows UNIX-like Mac 这三个系统的换行符不一样 虽然可能都写成\n

http://en.

Windows是\r\n UNIX-like是\n Mac是\r

如果你有Emacs 分别存成三个不同操作系统的格式就知道了
2014-02-04 12:07
woshiydp
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-2-3
得分:0 
谢谢!那么如何解决呢,我希望程序能在window下正常编译。
2014-02-04 20:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
是你自己不考慮兼容性問題,不是不能正常編譯。不能編譯,就連運行結果也沒有!

授人以渔,不授人以鱼。
2014-02-04 20:55
woshiydp
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-2-3
得分:0 
以下是引用TonyDeng在2014-2-4 20:55:46的发言:

是你自己不考慮兼容性問題,不是不能正常編譯。不能編譯,就連運行結果也沒有!

嗯,这不是没玩过嘛,一般怎么考虑兼容性啊?
2014-02-04 21:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
這個問題,是由於不同操作系統對文本型字符'\n'處理不同造成的,你使用fwrite()函數出現這個問題,表明你的數據中含有'\n'轉義字符,而轉義字符(一般地)正是在不同環境下有不同含義而使用的。解決的辦法,是在使用fwrite()寫出數據前,先把'\n'字符串替換爲0x0a再輸出——使用臨時變量以便不動源數據。另外一個解決辦法,是你的數據原本就不用轉義字符,直接使用二進制數據,存儲0x0a。

你一定要有意識:數據的字節長度是不一樣的!

[ 本帖最后由 TonyDeng 于 2014-2-4 21:36 编辑 ]

授人以渔,不授人以鱼。
2014-02-04 21:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-427018-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.100143 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved