代码之家  ›  专栏  ›  技术社区  ›  taoufeqreda

fwrite是如何工作的?

  •  1
  • taoufeqreda  · 技术社区  · 7 年前

    我试图用C语言编写一个程序,当我使用 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
        for (int z = 0; z < factor; z++)
        {
            fwrite(pixel, sizeof(RGBTRIPLE), 1, outBMP);
        }
    }
    

    一切正常:

    Input Bitmap Output Bitmap

    但是当我使用 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);
    }
    

    我明白了:

    Output Bitmap

    为什么会这样?

    1 回复  |  直到 7 年前
        1
  •  1
  •   orhtej2    7 年前

    问题是第三个参数, count ,指示由指向的数组中有多少个元素 ptr ,而不是实例指向 ptr 应该是书面的。你基本上是在写垃圾,在内存中,在 正在指向。

    请参阅 docs 了解更多详细信息。