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

本文详细介绍了如何使用C语言通过rb和wb方式复制二进制文件,并在此基础上进行筛选性修改,包括利用fseek定位目标文件并写入新内容。同时,文章还涉及了对二进制文件的读取、筛选与修改操作,为读者提供了一套完整的二进制文件处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对二进制文件的复制,就是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); }

 


 



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值