对二进制文件的复制,修改

来源:互联网 发布:淘宝商标需要注册吗 编辑:程序博客网 时间:2024/05/18 00:47
对二进制文件的复制,就是rb方式打开source文件,以wb方式打开target文件。
#include<stdio.h>#include<stdlib.h>void main(){FILE *fp;if((fp=fopen("E:\\class\\banjiname.dat","rb"))==NULL){printf("error\n");exit(1);}FILE *fp1;if((fp1=fopen("E:\\class\\banjiname_new.dat","wb"))==NULL){printf("error\n");exit(1);}char banjiname[20];while(fread(banjiname,20,1,fp)){fwrite(banjiname,20,1,fp1);}fclose(fp);fclose(fp1);}
对二进制文件的修改,就是在复制的前提下,添加一个筛选过程,将要去掉的内容continue掉

#include<stdio.h>#include<stdlib.h>#include<string.h>void main(){ FILE *fp; if((fp=fopen("E:\\class\\banjiname.dat","rb"))==NULL) {  printf("error\n");  exit(1); } FILE *fp1; if((fp1=fopen("E:\\class\\banjiname_new.dat","wb"))==NULL) {  printf("error\n");  exit(1); } char banjiname[20]; while(fread(banjiname,20,1,fp)) {  if(strcmp(banjiname,"jike1")!=0)   fwrite(banjiname,20,1,fp1);  else   continue; } fclose(fp); fclose(fp1);

}

必要时利用remove删除fp,把fp用rename更名为fp1;

 

 

所谓对二进制文件的修改,就是读取到target,利用fseek把指针定位到target前,然后利用fwrite写入新内容

#include<stdio.h>#include<stdlib.h>#include<string.h>void main(){ char ch[20]="jikeyes"; char ch1[20]="jike2"; char banjiname_1[20]; FILE *fp2; if((fp2=fopen("E:\\class\\banjiname.dat","rb+"))==NULL)//只读方式打开文件  {   printf("error\n");   exit(1);  } while(fread(banjiname_1,20,1,fp2)) {  if(strcmp(ch1,banjiname_1)!=0)   continue;  else  {   fseek(fp2,-20L,1);   fwrite(ch,20,1,fp2);   break;  }  } fclose(fp2);}

 

 

                                             
0 0
原创粉丝点击