c文件操作的一般流程
2011-11-03 14:54
141 查看
发表于:2011-07-16 18:22:11
最近在做一个小软件,其中有一个功能是把下载下来的一个txt文件给分割成三个小文件,然后分别保存为文本文档。大文件的格式如下:
#0#1
##########2
##########3
//这里有个换行
其中,1,2,3假设为每个小文件要保存的内容,“##########”为用来识别的分割符。即,每当读到“##########”时,就先不往下读文件,并将之前读到的内容保存下来。接着再继续往下读文件,直到文件结束。
回复于:2011-07-16 19:05:37
fread( readbuf, 1, length, f_read ); 一次
首指针A=readbuf,找到下一个位置####(指针B),得到长度A
fwrite(指针A,1,长度A,f_write_main);
找到下一个位置####(指针C),同时知道了长度B和长度C.
fwrite(指针B,1,长度B,f_write_detail);
fwrite(指针C,1,长度C,f_write_code );
回复于:2011-07-16 20:29:14
主要函数流程:
fopen
fseek
ftell
rewind
malloc
fread
fwrite
fclose
free
最近在做一个小软件,其中有一个功能是把下载下来的一个txt文件给分割成三个小文件,然后分别保存为文本文档。大文件的格式如下:
#0#1
##########2
##########3
//这里有个换行
其中,1,2,3假设为每个小文件要保存的内容,“##########”为用来识别的分割符。即,每当读到“##########”时,就先不往下读文件,并将之前读到的内容保存下来。接着再继续往下读文件,直到文件结束。
回复于:2011-07-16 19:05:37
fread( readbuf, 1, length, f_read ); 一次
首指针A=readbuf,找到下一个位置####(指针B),得到长度A
fwrite(指针A,1,长度A,f_write_main);
找到下一个位置####(指针C),同时知道了长度B和长度C.
fwrite(指针B,1,长度B,f_write_detail);
fwrite(指针C,1,长度C,f_write_code );
回复于:2011-07-16 20:29:14
#include <stdio.h> int GetPosOffset(char *p,int len) { //返回"##########"相对*p的偏移 char *tmp=p; while(len>0) { if(len-- && *tmp++=='#' ) if(len-- && *tmp++=='#' ) if( len>=4 && (*(unsigned int *) tmp)==0x23232323 ) { tmp+=4; len-=4; if(len>=4 && (*(unsigned int *) tmp)==0x23232323 ) return (tmp-p-6); } } return tmp-p; //不存在特征串"##########" } int main() { int len,lenA,lenB; FILE *fp,*fp1,*fp2,*fp3; char *pBuf; //测试test.txt保存内容abc#######a##########cb##########bcde# fp =fopen("test.txt","rb"); //test.txt必须存在 fp1=fopen("t1.txt","wb"); fp2=fopen("t2.txt","wb"); fp3=fopen("t3.txt","wb"); fseek(fp,0,SEEK_END); len=ftell(fp); rewind(fp); pBuf=(char *)malloc(len); len=fread(pBuf,1,len,fp);//一次 lenA=GetPosOffset(pBuf,len); fwrite(pBuf,1,lenA,fp1); lenB=GetPosOffset(pBuf+lenA+10,len-lenA); fwrite(pBuf+lenA+10,1,lenB,fp2); fwrite(pBuf+lenA+lenB+20,1,len-lenA-lenB-20,fp3); fclose(fp); fclose(fp1); fclose(fp2); fclose(fp3); free(pBuf); return 0; }
主要函数流程:
fopen
fseek
ftell
rewind
malloc
fread
fwrite
fclose
free
相关文章推荐
- 统一Windows Azure和一般web应用之间的文件操作代码(转+译)
- imp dump格式文件的一般流程
- 文件映射的相关操作流程
- 从电脑上向手机系统文件里面push文件操作流程:
- Linux 内核文件系统与设备操作流程分析
- Hadoop的文件读写操作流程
- Linux下配置文件读取操作流程及其C代码实现
- python文件操作流程
- Video4linux2一般操作流程
- linux-2 文件的一般操作
- 基金定投的一般流程是怎样的 基金定投怎么操作安全?
- 文件映射的相关操作流程
- 【git】git一般操作流程
- Springmvc实现文件上传的一般流程
- 文件流程的操作
- 一般文件操作(包括管道和套接字)
- Unity3d发布apk文件并在Android虚拟机中运行的操作流程
- 统一Windows Azure和一般web应用之间的文件操作代码(转+译)
- ASP.NET的一般处理程序对图片文件的基本操作
- Ubuntu 14.04 Vim编辑文件的一般操作