Thursday, July 29, 2010

大文本文件逆序(fread/fwrite操作

大文本文件逆序(fread/fwrite操作)
2010-03-05 13:52

备份

#include
#include
#include

void reverse(char *s,int len) //逆序函数
{
int i;
char temp;
for(i=0;i0) //待改进的一段
{
rewind(fp);
fseek(fp,(i-1)*SIZE,0);
fread(p1,SIZE,1,fp);
reverse(p1,SIZE-1);
fseek(fp,-i*SIZE,2);
fread(p2,SIZE,1,fp);
reverse(p2,SIZE-1);
fseek(fp,(i-1)*SIZE,0);
fwrite(p2,SIZE,1,fp);
fseek(fp,-i*SIZE,2);
fwrite(p1,SIZE,1,fp);
i++;
}
last = filelen-2*count*SIZE;
char *p = (char *)malloc(sizeof(char)*last);
if(last<2*SIZE)
{
fseek(fp,(i-1)*SIZE,0);
fread(p,last,1,fp); // 得大改的一段
reverse(p,last-1);
fseek(fp,(i-1)*SIZE,0);
fwrite(p,last,1,fp);
}

fclose(fp);
free(p1);
free(p2);
free(p);
system("pause");
return 0;
}

return 0;
}

当然,下面的也能逆序文件

#include
void reverse(FILE *fp)
{
char ch;
if ((ch=fgetc(fp))!=EOF)
reverse(fp);
else
rewind(fp);
if (ch!=EOF)
fputc(ch,fp);
}
int main(int argc, char* argv[])
{
FILE *fp=fopen("test.txt","r+");
if (fp)
{
reverse(fp);
fclose(fp);
}
return 0;
}

參考來源:

"大文本文件逆序(fread/fwrite操作) 2010-03-05 13:52 备份 #include <stdio.h> #include <stdlib.h> #include <string.h>"
- 大文本文件逆序(fread/fwrite操作)_巫山上云雨的空间_百度空间 (在「Google 網頁註解」中檢視)

No comments: