当我在循环中使用fwrite()
来执行此操作时,我正在尝试在C中编写一个按给定因子缩放位图图像的程序:
// Go through each pixel of input bitmap
for (int y = 0; y < inWidth; y++)
{
fread(pixel, sizeof(RGBTRIPLE), 1, inBMP);
// Write each pixel to output bitmap (factor) times
for (int z = 0; z < factor; z++)
{
fwrite(pixel, sizeof(RGBTRIPLE), 1, outBMP);
}
}
一切正常:
但是当我使用fwrite()
时没有循环:
// Go through each pixel of input bitmap
for (int y = 0; y < inWidth; y++)
{
fread(pixel, sizeof(RGBTRIPLE), 1, inBMP);
// Write each pixel to output bitmap (factor) times
fwrite(pixel, sizeof(RGBTRIPLE), factor, outBMP);
}
我明白了:
为什么会这样?
答案 0 :(得分:1)
问题是第三个参数count
,表示ptr
指向的数组中有多少个元素,而不是应该写入实例指向ptr
的次数。你基本上是在ptr
所指向的内存中写入垃圾。
有关详细信息,请参阅docs。