gpt4 book ai didi

c++ - cstdio(c++) 的简单二进制文件 I/O 问题

转载 作者:行者123 更新时间:2023-11-30 04:38:42 24 4
gpt4 key购买 nike

下面的 c++ 程序无法读取文件。我知道使用 cstdio 不是很好的做法,但我已经习惯了,它应该可以正常工作。

$ ls -l l.uyvy

-rw-r--r-- 1 atilla atilla 614400 2010-04-24 18:11 l.uyvy

$ ./a.out l.uyvy

从 614400 中读取了 0 个字节,可能是错误的文件

代码:

#include<cstdio>
int main(int argc, char* argv[])
{
FILE *fp;

if(argc<2)
{
printf("usage: %s <input>\n",argv[0]);
return 1;
}

fp=fopen(argv[1],"rb");
if(!fp)
{
printf("erör, cannot open %s for reading\n",argv[1]);
return -1;
}
int bytes_read=fread(imgdata,1,2*IMAGE_SIZE,fp); //2bytes per pixel
fclose(fp);
if(bytes_read < 2*IMAGE_SIZE)
{
printf("Read %d bytes out of %d, possibly wrong file\n",
bytes_read, 2*IMAGE_SIZE);
return -1;
}
return 0;
}

最佳答案

你已经得到了 size 和 nmemb 的参数 back to front

http://www.manpagez.com/man/3/fread/

试试吧,

int bytes_read = fread (imgdata, 2*IMAGE_SIZE, 1, fp);

此外,您还没有提供 imgdata 缓冲区的声明,您需要确保缓冲区足够大 - 或者已正确 malloc。

关于c++ - cstdio(c++) 的简单二进制文件 I/O 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3031751/

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