C语言将二进制文件写入内存malloc fopen fseek fread
///20221118malloc获取文件大小,并读取内存中
///
void Funcation3()
{
//保存读入到内存中的结果
//创建一个buffer,用来将打开的文件放入申请的内存中
char* buffer;
//这里保存文件长度
long file_size = 0;
//打开文件
FILE* fp;//创建一个FILE类型的指针用来获取文件
fp = fopen("notepad-32bit.exe", "rb");
if (fp == NULL)//如果获取不正常,那么异常退出
{
printf("open file faild\n");
return exit(1);
}
printf("当前文件指针所指位置:%x\n", fp);
//获取文件大小,这里需要使用fseek用来移动文件指针,ftell是获取文件指针相对于文件头的偏移,所以可以通过ftell的内容获取
//文件大小,当文件指针指向了文件尾,那么ftell的结果就是整个文件大小。
//当前指向为程序末尾
fseek(fp, 0, SEEK_END);
file_size = ftell(fp);
printf("文件大小(字节):%d\n", file_size);
//申请内存空间,在堆中
buffer = (char*)malloc(sizeof(char)*file_size);
//申请空间必须进行验证
if (buffer == NULL)
{
printf("申请失败\n");
}
//初始化申请的内存空间
memset(buffer, 0, sizeof(char)* file_size);
//将文件读入内存中(就是将读取的文件拷贝到内存中)
//此时需要将文件的指针指向文件头进行读取
fseek(fp, 0, SEEK_SET);
fread(buffer, sizeof(char), file_size, fp);
printf("打印buffer中的内容:%s\n", buffer);
printf("打印buffer此时的内存地址:%x\n", &buffer);
fclose(fp);
free(buffer);
buffer = NULL;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2021-11-19 Lead_canary
2020-11-19 web-命令执行绕过(转载)
2020-11-19 MISC-内存取证