| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1469 人关注过本帖
标题:关于wb与w的写入磁盘问题
只看楼主 加入收藏
panxiang88
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-7-21
收藏
 问题点数:0 回复次数:3 
关于wb与w的写入磁盘问题

#include<stdio.h>

void put(int i, FILE *fp);
int get(FILE *fp);

void put(int i, FILE *fp)
{
int j;
char *c;
c = (char *)&i;
for(j=0;j<4;j++)
fputc(*(c+j),fp);
}

int get(FILE *fp)
{
int i,j;
char *c;
c = (char *)&i;

for(j=0;j<4;j++)
*(c+j) = fgetc(fp);

return (i);
}

main()
{
FILE *fp;
int i = 100000;
fp = fopen("try","wb");
put(i,fp);
fclose(fp);
fp = fopen("try","rb");
i = get(fp);
printf("%d",i);
fclose(fp);

return 0;
}

我写的一个getw,putw的程序,可是有一点儿想不明白,就是,我用wb或w(红字部分)分别写到磁盘上后,他们在磁盘上的存储形式一样吗?我越想越晕,觉得应该不一样,可是查看了一下似乎又一样~~~很不明白~~~~

搜索更多相关主题的帖子: 磁盘 
2007-07-23 11:42
gamebcc
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-10-27
收藏
得分:0 
我也想问问,总觉得b 和t 没什么区别~~

先学C.....
2007-10-29 14:44
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
w是文本模式写,wb是二进制模式写
举个简单的列子,用分别用两种模式打开再用fprintf(fp, "abc\n");写入内容,同样的用两种模式的fscanf读一个字符串出来并显示,看上去一样吧,再用记事本分别打开两种输出文件看看,其实内容是有区别的,如果你再用winhex之类的软件看,会更清楚这一区别,文本模式和二进制模式对回车的处理不一样,甚至对文件结束标记的识别都不一样,文本模式下的结束标记EOF在二进制模式下是正常的内容。这样一来,若混用两种模式,fseek()定位会不准,文件结束判断可能会搞错等等。

另,建议在文本模式下用fprintf/fscnaf函数,二进制模式用fwrite/fread函数。当然,你也可以反着用试试看结果有什么不同,经验就是在尝试中获得的。
2007-10-30 09:37
gamebcc
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-10-27
收藏
得分:0 
谢谢版主大人...
我去试试

先学C.....
2007-10-30 14:40
快速回复:关于wb与w的写入磁盘问题
数据加载中...
 
   



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

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