| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3648 人关注过本帖
标题:fread和fwrite字节不足怎么办?
取消只看楼主 加入收藏
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
结帖率:70%
收藏
 问题点数:0 回复次数:3 
fread和fwrite字节不足怎么办?
假如我们定义了个char[100];然后打开文件调用fread进行读操作再打开另外文件进行fwrite操作
那么我们的形式应该是
fread(a,100,1,in);
fwrite(a,100,1,out);
但是如果输入的文件的字节数不是100的倍数,则出现在输出文件内用乱码填充到100字节的倍数,也就是如果文件没有100个字节fread和fwrite也要强制读写100个字节吗?
搜索更多相关主题的帖子: fread fwrite 字节 
2008-12-06 13:14
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
是啊,那有没有解决办法吗?假设我要一次读写100个字节,但是文件没有100个字节,因为你不可能时时刻刻知道文件的具体大小啊

在虚拟的世界中寻找目标。
2008-12-06 13:45
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
何必那么麻烦呢,我用ftell和fseek函数可以求出文件具体大小,这样我可以具体知道最后文件剩下多少字节,我就可以另外出理这几个字节了

在虚拟的世界中寻找目标。
2008-12-06 19:38
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
之所以这样写是因为发现频繁的调用函数会明显降低程序运行效率,假如我处理的是一个很大很大的文件,如电影剪切那么程序运行的时间将太长,但是用fread/fwrite的好处是可以整块数据的处理速度明显可以加快,比如下面是我写的剪切歌曲的程序,程序可以达到期待目的,当然里面有许多可以优化的地方,比如把名字换成从外界出入,这样就可以剪切任何文件了而不用每次都到代码里改名字.注:1048576字节就是1M
#include<stdio.h>
#define size 1048576
main()
{
     char a[size],b[20];
     int i=1,fileSize,n;
     FILE *out,*in;
     in=fopen("jiaru.mp3","rb");
     if(!in) return;
     fseek(in,0,2);//文件指针移到结尾
     fileSize=ftell(in);//判断结尾的位置,也就是文件大小
     fseek(in,0,0);//再移到文件头
     n=fileSize/size;//求出数据的块数
     while(i<=n)
     {
               sprintf(b,"jiaru%d.mp3",i);
               out=fopen(b,"wb");
               fread(a,size,1,in);
               fwrite(a,size,1,out);
               fclose(out);
               i++;
               }//剪切
                  sprintf(b,"jiaru%d.mp3",i);//下面四行处理剩下的字节
                  out=fopen(b,"wb");
                  fread(a,fileSize-n*size,1,in);
                  fwrite(a,fileSize-n*size,1,out);
                  fclose(out);
                  fclose(in);
                  }

[[it] 本帖最后由 faminxmu 于 2008-12-6 21:36 编辑 [/it]]

在虚拟的世界中寻找目标。
2008-12-06 20:13
快速回复:fread和fwrite字节不足怎么办?
数据加载中...
 
   



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

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