当我对它执行fwrite()时为什么不写文件?

时间:2017-03-10 08:58:30

标签: c

我基本上试图创建一个简单的程序,模拟一个屏幕,其值随机生成并输出到bmp文件。但是,在文件操作中有一些问题..当调用fwrite时,文件保持零字节,这意味着什么都没有写入该文件..我已经尝试改变fopen模式(例如“w + b”, “wb +”,“wb”)但仍然没有运气..无论如何这里是代码

char resultFileName[BUFSIZ];
char currentDirectory[BUFSIZ];
//char generatedFileFolder[] = "\\generatedFile";
FILE *resultFile;

getcwd(currentDirectory, sizeof(currentDirectory));
snprintf(resultFileName, sizeof(resultFileName), "%s%s", currentDirectory, "\\result.bmp");
resultFile = fopen(resultFileName, "w+b");

BITMAPFILEHEADER bmfh;

BITMAPINFOHEADER bmih;

fwrite(&bmfh, sizeof(bmfh), 1, resultFile);
fwrite(&bmih, sizeof(bmih), 1, resultFile);

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您需要致电fclose

f开头的I / O函数被缓冲,这意味着它们只是定期写入(当达到最大缓冲区大小时),或者当你关闭它时。

由于C不是垃圾收集语言(或具有析构函数概念的语言),因此除非刷新缓冲区或关闭文件,否则不会刷新缓冲区。