我正在读取逐字节构成文件的字节。如果我通过fputc
直接写入文件,则文件输出正确。但是,如果我使用unsigned char
数组并写入数组的元素,然后通过fwrite
将数组写入文件,我会得到一个混乱的损坏文件:
FILE *outfp = fopen("my_file.jpg", "w");
unsigned char *outbuf = malloc(filesize);
for (int i = 0; i < filesize; ++i)
{
unsigned char byte = my_funcion_to_read_byte(i);
// Works
fputc(byte, outfp);
// Fails
outbuf[i] = byte;
}
// Fails
fwrite(outbuf, sizeof(*outbuf), filesize, outfp);
fclose(outfp);
fputc正在做一些魔法还是我错过了什么?
修改 正如人们所说,代码实际上运行正常。我的问题是将数组传递给函数进行修改而不是指向数组的指针。
而不是my_func(unsigned char *outbuf, ...)
我需要执行:my_func(unsigned char **outbuf, ...)
并使用my_func(&outbuf)
我想我在这个问题上早早就把枪拉了出来,对不起。
答案 0 :(得分:0)
如果这是一个jpg文件,如果你的意思是“混乱损坏”显示的图像,那么可能是因为你已经用所有fputc
编写了图像后将缓冲区附加到文件中第
我建议您将缓冲区写入单独的文件以进一步测试它。
注意:您应该以二进制模式"wb"
打开文件。