///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; }
标签:fp,文件,malloc,fseek,buffer,fread,file,printf,size From: https://www.cnblogs.com/0x200/p/16906346.html