请告诉我哪里出错了。
我有一个文件,我需要将最后n个字节复制到数组。
char *buffer = (char *)malloc(sizeof(char)*n);
size_t result = fread(buffer,sizeof(char)*n,1,outptr);
结果的值为0.
我的代码中的所有内容都正常工作(我已使用gdb检查了所有值)。在一些行之后我也释放了缓冲区。
n是用户输入的。输出ptr用作
FILE *outptr = fopen(outfile,"w")
//输出文件名也是用户输入的,并检查以确保它是一个bmp文件。
答案 0 :(得分:1)
size_t result = fread(buffer, n, 1, outptr);
应该没问题。
OTOH,你正在处理的文件是空的吗?
请确保fopen()
成功,并检查malloc()
是否成功!
在完全不同的注释中,sizeof()
和fread()
会返回size_t
,并且应该投放到int
。
答案 1 :(得分:1)
您正在尝试从以写入模式打开的文件中读取。
变化:
FILE *outptr = fopen(outfile,"w");
为:
FILE *outptr = fopen(outfile,"r"); /* Use "rb", not "r", if 'outfile' is binary. */