作者lulovepig (累)
看板C_and_CPP
标题[问题] 问一个binary档案fread fwrite的问题
时间Sun Feb 8 18:15:29 2009
现有一个原始档案 A, 档案约1M大 内容大概长这样
9D 22 22 02 20 AD 02 00 EE 22 22 02 20 C7 02 1C
B2 22 22 02 21 83 02 20 78 22 22 02 21 97 02 1F
E1 22 32 02 21 AB 02 20 FA 22 22 02 21 BF 02 00
现在我要做的是要把原始档案A 的头尾取出来
中间都填入FF 头尾大小不一定
有可能头占16K 尾也占16K 给使用者自己输入(start和length)
然後写到一个新的档案B里
我现在写到
while((fread(&tmp,sizeof(char),1,ptr))==1)
{
fwrite(&tmp,sizeof(char),1,ptr2);
这样可以完整的复制整个档案A到档案B, 且内容是对的
但是我不知道怎麽只取一小部分= =
所以我把回圈改掉试试, 改成
for(t=0; t<=50; t++)
{
fread(&tmp,sizeof(char),1,ptr);
fwrite(&tmp,sizeof(char),1,ptr2);
这样可以只印出前50个值, 我printf tmp在萤幕上也是对的
可是写到档案B却变错的, 用UltraEdit打开却出现错误讯息:
档案可能不是Dos格式,要转换成Dos格式吗?
打开档案里面是乱码 ,像是 t ? 4 '' pÜ雘Z艞tꔠ 这样, 好像存成char
请问1.若是不用forloop去做,还有别的方法可以让回圈停下而且存到档案B内容是对的吗?
2.我这样做方向对吗?因为没做过Binary档案的处理,所以不知道是不是有更好的方法
--
|
( 〒_〒) 呜呜呜~
(∩∩)________
╱
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.207.116
※ 编辑: lulovepig 来自: 61.224.207.116 (02/08 19:08)
1F:→ softwind:1.先求出src file size 2.fread+fwrite 一次就OK 02/08 19:16
2F:→ lulovepig:src file是1M 我用fread+fwrite只能从头复制到尾耶 02/08 19:18
3F:→ lulovepig:是我参数下的不对吗? 02/08 19:19