gpt4 book ai didi

c - 将整个文件读入堆上分配的该区域

转载 作者:行者123 更新时间:2023-11-30 14:50:56 25 4
gpt4 key购买 nike

我正在尝试通过命令行参数打开并读取两个 bmp 文件。在我 malloc char * 的大小后,我迷失了,fread() 不能很好地工作。我的代码有什么问题

这是我所拥有的:

void processFileDate(int a, char  **argv, unsigned long size) {

if(a != 3)
return;
FILE *f1;
FILE *f2;
f1 = fopen(*++argv,"rb");
f2 = fopen(*++argv,"rb");
if(f1 == NULL || f2 == NULL) {
printf("Can not open file \n");
return;
}
unsigned char *p1 = (unsigned char*)malloc(size + 1);
unsigned char *p2 = (unsigned char*)malloc(size + 1);

fread(&p1, 1, size, f1);
fread(&p2, 1, size, f2);

最佳答案

查看函数fread()的签名:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

正如你所看到的,它的第一个参数是一个指针。在代码中,您将 p1p2 定义为指向 unsigned char 的指针,但将它们的地址传递给 fread().这是错误的;您应该按值传递它们,如下所示:

fread(p1, 1, size, f1);
fread(p2, 1, size, f2);

关于c - 将整个文件读入堆上分配的该区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48664202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com