gpt4 book ai didi

c - 通过 fputc 与 C 中的 fwrite 数组写入文件

转载 作者:行者123 更新时间:2023-11-30 19:35:09 24 4
gpt4 key购买 nike

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

我想我在这个问题上操之过急,抱歉。

最佳答案

如果这是一个 jpg 文件,并且如果您的意思是显示的图像“困惑损坏”,那么可能是因为您在使用所有 fputc< 写入图像后将缓冲区附加到文件中s.

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

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

关于c - 通过 fputc 与 C 中的 fwrite 数组写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051420/

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