读写文件

一、打开文件

	FILE *pF = fopen("c:/fg.exe","rb");
	FILE *pW = fopen("c:/fg1.exe","wb");

二、判断打开文件是否失败

	if(!pF)
	{
		printf("打开文件失败");
		return 0;
	}

三、获取文件大小

	#include <windows.h>
	fseek(pF,0,SEEK_END);		//将指针从开始的位置移动到末尾
	DWORD fileSize = ftell(pF);

四、申请内存,并判断

	LPVOID pFileBuffer = malloc(fileSize);
	if(!pFileBuffer)
	{
		printf("分配空间失败");
		fclose(pF);	//关闭文件
		return NULL;
	}

五、将内容读取到内存,并判断

	fseek(pF,0,SEEK_SET);	//将指针指向开始
	size_t n = fread(pFileBuffer,fileSize,1,pF);	//将数据读取到缓冲区中
	if(!n)
	{
		printf("读取数据失败");
		free(pFileBuffer);		//释放内存
		fclose(pF);			//关闭文件
		return NULL;
	}

六、将内存中的数据写到磁盘

	fwrite(pFileBuffer,fileSize,1,pW);

七、释放内存,关闭文件

	free(pFileBuffer);
	fclose(pF);	
	fclose(pW);	

八、完整代码

#include "stdafx.h"
#include <windows.h>
#include "stdlib.h"	

int main(int argc, char* argv[])
{

	//打开文件
	FILE *pF = fopen("c:/fg.exe","rb");
	FILE *pW = fopen("c:/fg1.exe","wb");
	if(!pF)
	{
		printf("打开文件失败");
		return 0;
	}
	
	//获取文件大小
	fseek(pF,0,SEEK_END);		//将指针从开始的位置移动到末尾
	DWORD fileSize = ftell(pF);

			
	//分配缓冲区(申请内存)
	LPVOID pFileBuffer = malloc(fileSize);
	if(!pFileBuffer)
	{
		printf("分配空间失败");
		fclose(pF);	//关闭文件
		return NULL;
	}


	//将数据读取到内存
	fseek(pF,0,SEEK_SET);	//将指针指向开始
	size_t n = fread(pFileBuffer,fileSize,1,pF);	//将数据读取到缓冲区中
	if(!n)
	{
		printf("读取数据失败");
		free(pFileBuffer);		//释放内存
		fclose(pF);			//关闭文件
		return NULL;
	}

	//向磁盘写入数据
	fwrite(pFileBuffer,fileSize,1,pW);

	//释放内存,关闭文件
	free(pFileBuffer);
	fclose(pF);	
	fclose(pW);	

	return 0;
}

九、勿在浮沙筑高台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值