gpt4 book ai didi

c - fwrite 写出字节,而不是实际的整数

转载 作者:行者123 更新时间:2023-11-30 18:22:16 25 4
gpt4 key购买 nike

我正在完成一项作业,其中我需要输出如下数据:

255 0 0 255 0 0 255 0 0
255 0 0 255 0 0 255 0 0
255 0 0 255 0 0 255 0 0

首先想到的是一次输出一个像素,但我的教授希望我使用 fwrite 一次性输出所有像素。

每次我使用 fwrite 时,我最终都会将输出作为实际字节,而不是整数。

我该如何解决这个问题?

int rows = 3;
int cols = 3;
int imgsize = (3 * rows * cols);
unsigned char *img = malloc(imgsize);
int ri = 0;
int ci = 0;

for (ri = 0; ri < rows; ri++) {
for (ci = 0; ci < cols; ci++) {
*img = 255;
*(img + 1) = 0;
*(img + 2) = 0;
img += 3;
}
}

FILE *fp = fopen("output", "w");
fwrite(img, 1, imgsize, fp);
fclose(fp);

最佳答案

这就是fwrite 的作用。如果您想要格式化输出,那么您可以使用printf函数。

例如,

for (size_t i = 0; i < imgsize; ++i)
fprintf(fp, "%d ", img[i]);

如果您想在一定数量的条目后插入换行符,则可以为此循环添加逻辑。

注意。正如 Joachim Pileborg 所指出的,您应该修改 for 循环,以便它们对从 img 复制的不同指针进行操作。否则您就会忘记图像存储的实际开始位置。

关于c - fwrite 写出字节,而不是实际的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859936/

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