通过fputc中的fwrite数组写入文件

时间:2017-03-27 16:11:15

标签: c arrays file-io

我正在读取逐字节构成文件的字节。如果我通过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)

进行调用

我想我在这个问题上早早就把枪拉了出来,对不起。

1 个答案:

答案 0 :(得分:0)

如果这是一个jpg文件,如果你的意思是“混乱损坏”显示的图像,那么可能是因为你已经用所有fputc编写了图像后将缓冲区附加到文件中第

我建议您将缓冲区写入单独的文件以进一步测试它。

注意:您应该以二进制模式"wb"打开文件。