请教用C语言按要求读取文件中字符的代码,谢谢!

需求是:
输入一个二进制文件,对这个文件从位置0x25开始一直读到字符串"end"为止,然后把读取的输出到一个以此文件名称命名的txt文件。(我的那些文件就这个范围的字符有效)
或者是对这个文件只读取a-Z0-9空格换行(只有0x0A)然后输出到一个以此文件名称命名的txt文件

#include "stdafx.h"
#include<stdio.h>
void main()
{
char filename[256]={0};
char buf[10240]={0};
char newname[128]={0};
printf("请输入文件名:");gets(filename);
FILE *rfp=fopen(filename,"rb");
if(rfp==NULL){printf("文件[%s]打不开",filename);exit(-1);}

strcpy(newname,filename);strcat(newname,".txt");
FILE*wfp = fopen(newname,"wb");
if(wfp==NULL){printf("文件[%s]打不开",newname);fclose(rfp);exit(-1);}

fseek(rfp,0x25,SEEK_SET);

int i=2;
int c;
while((c=fgetc(rfp))!=EOF)
{
buf[i] = c;
buf[i+1] = '\0';
if(buf[i-2]=='e'&&buf[i-1]=='n'&&buf[i]=='d')
{
buf[i-2]='\0';
break;
}
if(buf[i]=='\n')
{
for(int j=2;buf[j];j++) fputc(buf[j],wfp);
i=2;
}
else
i++;
}
fclose(rfp);
for(int j=2;buf[j];j++) fputc(buf[j],wfp);
fclose(wfp);
printf("处理完毕");
}
///////如果没有发现end字样,会一直复制到文件尾或文件结束符止
///////VC7下调试通过 敬请采纳 谢谢
温馨提示:答案为网友推荐,仅供参考
相似回答