无意中写成的程序实现了功能,却不知道怎么实现的?文件处理。
对比较大的文件处理,我采用的是分次读取文件+移动指针的方法。已知文件的大小是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]]