| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 631 人关注过本帖
标题:无意中写成的程序实现了功能,却不知道怎么实现的?文件处理。
只看楼主 加入收藏
mozhaodi
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-1-6
结帖率:100%
收藏
 问题点数:0 回复次数:0 
无意中写成的程序实现了功能,却不知道怎么实现的?文件处理。
对比较大的文件处理,我采用的是分次读取文件+移动指针的方法。已知文件的大小是index字节,有效数据为long型,我分成index/1000次来读取,一次读取1000字节。用了一个循环,for(g=0;g<index/1000;g++),在这个循环体内,对1000个字节做处理,因为是long型,所以1000个字节就是250个数据,所以再写一个循环,
for(j=0;j<250;j++)然后每次在处理前移动一下指针,指向文件的下一个1000字节处。具体代码如下


程序代码:
FILE*in;

 FILE*out;

 long*buffer;
long*k;

 long j,g,index;
buffer=(long*)malloc(index);
k=(long*)malloc(index);
for(g=0;g<index/1000;g++)

 {
  fseek(in,1000*g,0);//指向文件的下一个1000个
  fread(buffer+g*1000,1000,1,in);
for(j=0;j<250;j++)
{

 k[g*1000+j]=buffer[g*1000+j]+1;//简单的加一运算
}
fwrite(k+g*1000,1000,1,out);
}
fclose(out);
fclose(in);
free(buffer);
free(k);
}

 
这个确实实现了让所有数加一的功能,但问题是,k存的不是连续的。存的是0~250,1000~1250等等。我想让k存连续的,因为我还有其他操作,请问我错在哪里?

[[it] 本帖最后由 mozhaodi 于 2009-7-27 09:07 编辑 [/it]]
搜索更多相关主题的帖子: C语言 文件 处理 指针 
2009-07-26 19:13
快速回复:无意中写成的程序实现了功能,却不知道怎么实现的?文件处理。
数据加载中...
 
   



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

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