读书人

关于文本文件中记录的随机抽取记录该如

发布时间: 2012-03-13 11:21:11 作者: rapoo

关于文本文件中记录的随机抽取记录该怎么实现?
哪位大侠能帮我解决下这个问题: "文本文件中记录的随机抽取后,放入一个新的文本文件中 "该怎么实现。急切盼望你的回答!

[解决办法]
设文件长度 flen (在程序中可以求得)
记录长度 len,

记录变量 x

FILE *fp=fopen(....);
int pos=rand()%flen; //随机值
pos = pos/len*len; //随机值调整到记录起始位置
fseek(fp, 0, SEEK_SET); //移动文件指针
fread(&x, sizeof(记录), 1, fp); //读取
[解决办法]
// 可能会比较慢
#define MAXLINE 1024
void randomread(FILE *fp){
int pos[MAXLINE]; //行起始指针
int len[MAXLINE]; //每行的长度
int line = 0, start = 0;
char c;

len[line]=0;
while(!feof){
fread(&c,1,1,fp);
start++;
if(c== '\n '){
len[++line] = 0;
pos[++line] = start+1;
}
else
len[line]++;
}
// line - 总行数
// 读取第i行
// char *buf = (char *)malloc(len[i]);
// fseek(fp,pos[i],SEEK_SET);
// fread(buf,len[i],1,fp);
// 剩下的就不用说了吧
}
[解决办法]
有些地方写错了...

while(!feof(fp)

pos[++line] = start+1; => pos[line] = start+1;

读书人网 >C++

热点推荐