| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 909 人关注过本帖
标题:文件类别问题(特别邀请版主和高手赐教)
只看楼主 加入收藏
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
结帖率:89.66%
收藏
已结贴  问题点数:10 回复次数:12 
文件类别问题(特别邀请版主和高手赐教)
二进制文件和文本文件在进行各种读写操作时有什么不同之处?
我在操作中似乎没有发现什么不同之处?
请赐教!
搜索更多相关主题的帖子: 类别 版主 文件 
2010-05-01 22:59
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
你试试读写'\b'等字符就可能知道差别了!

★★★★★为人民服务★★★★★
2010-05-02 08:03
dmee
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-02 09:09
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 2楼 cnfarer
用什么形式读写?
fscanf fprintf
还是
fread fwrite
?


南国利剑
2010-05-03 00:37
dousao
Rank: 2
等 级:论坛游民
帖 子:228
专家分:58
注 册:2007-11-8
收藏
得分:0 
这种东西我也纠结,往往是一段时间非常透彻,等过段时间发现又有新的类库,用这个类库一段时间,又发现另一个方法,绕来绕去,最初接触的却忘了

同行售各专业书籍,全1折,淘宝店:http://maishu.
2010-05-03 01:23
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:5 
二进制文件和文本文件存储上有根本的不同。
比如一个整数
int i=123;
保存在二进制文件里占2个字节,保存的是i在内存中的存储,内容是  7B 00 00 00,必须用ue等支持二进制查看的编辑器查看。
文本文件要占3个字节,保存的是ascii代码。内容是 123,记事本也能查看。

ofstream bin("bin.txt", ios::out | ios::binary);
    ofstream txt("text.txt", ios::out );
    int i=123;
    bin.write((char*)(&i),sizeof(i));
    txt << i;

    bin.close();
    txt.close();
2010-05-03 11:23
itma
Rank: 4
等 级:业余侠客
帖 子:105
专家分:266
注 册:2010-2-8
收藏
得分:0 
以下是引用apull在2010-5-3 11:23:41的发言:

二进制文件和文本文件存储上有根本的不同。
比如一个整数
int i=123;
保存在二进制文件里占2个字节,保存的是i在内存中的存储,内容是  7B 00 00 00,必须用ue等支持二进制查看的编辑器查看。
文本文件要占3个字节,保存的是ascii代码。内容是 123,记事本也能查看。
 
ofstream bin("bin.txt", ios::out | ios::binary);
    ofstream txt("text.txt", ios::out );
    int i=123;
    bin.write((char*)(&i),sizeof(i));
    txt << i;
 
    bin.close();
    txt.close();
顶!我也终于清楚了一些。
2010-05-03 11:25
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 6楼 apull
也就是说,二进制文件是的内存映射,那int型的在c++中应该占四个字节吧?

南国利剑
2010-05-03 11:39
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:5 
区别1
文本文件只能以A码的形式进行存储
比如int a=123 应该转换为char a[]={'1','2','3'}然后存储在文本文件 3个字符 3字节
以二进制存储不用转化 所以为2字节
计算机只能识别二进制的文件 所以文本文件是以二进制信息存储的

区别2
char a=10 ; 以文本文件存储时 为2字节 系统自动在10前面添加了一个13 也就是0x0d 这就是为什么回车代表2个字符/r/n
当以二进制文件存储时只有1字节 不会添加13
所以如果以文本文件存储数据带有10这个A码时 再将此文件用二进制形式读取时 会多了个东西 也就是说以文本文件存储再以二进制形式添加时
如果文本文件里有A码10 以二进制读取时需加个字节 否则数据读不全
2010-05-03 11:39
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 9楼 hahayezhe
二进制占的字节数是否与编译器有关?
比如在c++的编译器中int就应该占4个字节?

南国利剑
2010-05-03 11:43
快速回复:文件类别问题(特别邀请版主和高手赐教)
数据加载中...
 
   



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

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