主要代码如下:
scanf("%s",filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("Can not open the file.\nplease check your input.\n");
break;
}
fseek(fp,0L,SEEK_END);
filesize=ftell(fp);
rewind(fp); //要常常进行指针回首
deal=(char*)malloc((filesize+1)*sizeof(char));
fread(deal,sizeof(char),filesize,fp);
deal[filesize]='\0';
fclose(fp);
break;
然后操作函数:
void deleteu(char*tmp,FILE *fpp,char*target) ;
{
int i=0,j=0;
int t1=0,t3=0,file_size,k=0,num=0; //num为查找到字符串个数
char *buf;
t1=getlen(target);
file_size=getlen(tmp);
buf=(char*)malloc((file_size+1)*sizeof(char));
while(i<=file_size-t1&&j<t1)
{
if(target[j]==tmp[i+j])j++;
else
{
j=0;
buf[k]=tmp[i];
i++;
k++;
}
if(j==t1)
{
i=i+t1;
num=num+1;
j=0;
}
}
buf[file_size-num*t1]='\0';
t3=getlen(buf);
memorycopy(buf,tosave);
fprintf(fpp,"-d%d\n\n",num);
printf("%d\n",num);
fwrite(buf,sizeof(char),file_size-num*t1,fpp);
free(buf);
buf=0;
}
为什么我这个操作,文本最后的一个"."读入读出总感觉有点问题,有时会输不出".",修改后有时输出了这个点(最后一个字符)但后面多跟了一些乱码,请问该怎么解决呢?
请大家无视我的
memorycopy(buf,tosave);
这一句哈哈哈
对的 我不是也这样写吗
追答你是说输出吧。
buf最后的一个字符后,应该是0,你跟踪一下,看是不是。
另外
fwrite(buf,sizeof(char),file_size-num*t1,fpp);
写成如下试试
fwrite(buf,file_size-num*t1, 1, fpp);