去字符位置的问题

shenfuhua 2003-06-10 09:38:32
10M的文件按0.5M的大小读如缓存。查找该文件里指定字符的位置。打印在屏幕或保存为一个新文件。我想这样。但是还不行。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>

void main()
{
char buf1[5000];
char buf2[5000];
char buf3[5000];
FILE* zk1=NULL;
FILE* zk3=NULL;
char* z1=NULL;
char* z2=NULL;
char* z3=NULL;
int a1=0;
int a2=0;
int a3=0;
/*char _char;/*指定要查找的字符内容*/
/*char tmp;*/
zk1=fopen("c:\\test.txt","r");

fseek(zk1,0,SEEK_END); /*社定资料的位置*/
a1=ftell(zk1);
fseek(zk1,0,SEEK_SET);
memset(buf1,'\0',sizeof(buf1));
memset(buf2,'\0',sizeof(buf2));
memset(buf3,'\0',sizeof(buf3));
fread(buf1,a1,1,zk1);/*buf1是将要放文件内容的空间*/
/*a1是文件内容的长度
为一次
test为文件被读内容的起始点指针 */
fclose(zk1);
/* 至此读test文件结束,下面开始字符串操作 */
z3=strstr(buf1,"cad");/*查找_char所在的位置 */
printf("%d\n",a2);
strcpy(buf3,z3);/*把_char后面的文件名取出来 */
printf("%s\n",buf3);
//zk3=fopen("c:\\ddr.txt","w");/*用这个文件名建立新文件 */
zk3=fopen((char*)buf3,"w+");
z3=strstr(buf1,"cad");/*再次查找_char所在的位置 */
//fwrite(buf3,strlen(buf3),1,zk3);
fwrite(buf1,z3-buf3,1,zk3);
printf("%s\n",buf1);
fclose(zk3);
}
...全文
18 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chijiao 2003-06-10
  • 打赏
  • 举报
回复
我是在LINUX下的程序,转换成WIN下可能有细微差别。
chijiao 2003-06-10
  • 打赏
  • 举报
回复
看不太懂你的程序。
你用用这个:


void main(int argc,char *argv[])
{
if(argc < 4)
{
cerr <<"Usege : MatchData SourceFileName ResultFile" << endl;
exit(0);
}

int iSouFile,iSelFile;
iSouFile = -1,iSelFile = -1;
char ReadBuf[5001];
iSouFile = open(argv[2],O_RDONLY);
if(iSouFile < 0)
{
cerr <<"Open File Fail!! File Name Is " << argv[2] << endl;
exit(0);
}

iSelFile = open(argv[3],O_WRONLY|O_CREAT );
if(iSelFile < 0)
{
cerr <<"Open File Fail!! File Name Is " << argv[3] << endl;
exit(0);
}

lseek(iSouFile,0l,SEEK_SET);
int iFileLen = lseek(iSouFile,0l,SEEK_END);
lseek(iSouFile,0l,SEEK_SET);
int iReadPos = 0;
int iReadLen = sizeof(ReadBuf) - 1;
int iRet = 0;
char *pTmp = NULL,*Replace = NULL;
int iTmp = 0;
while(iFileLen && iFileLen > iReadPos)
{
memset(ReadBuf,0,sizeof(ReadBuf));
iRet = read(iSouFile,ReadBuf,sizeof(char) * iReadLen);
iReadPos += iRet;
Replace = ReadBuf;
iTmp = 0;
while(1)
{
pTmp = strstr(Replace,argv[1]);
if(pTmp != NULL)
{
/*找到了,处理你想做的事,用SelFile写文件?*/
//
char sTmp[256];
iTmp += (pTmp - Replace);
sprintf(sTmp,"%s - %d \n",argv[1],iReadPos - iRet + iTmp);
write(iSelFile,sTmp,strlen(sTmp));
//
Replace = pTmp + strlen(argv[1]);
pTmp = NULL;
continue;
}
else
{
break;
}
}
}

sleep(1);
close(iSouFile);
close(iSelFile);
return 0;
}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧