我基本上试图创建一个简单的程序,模拟一个屏幕,其值随机生成并输出到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);
我在这里做错了什么?
答案 0 :(得分:3)
您需要致电fclose
。
以f
开头的I / O函数被缓冲,这意味着它们只是定期写入(当达到最大缓冲区大小时),或者当你关闭它时。
由于C不是垃圾收集语言(或具有析构函数概念的语言),因此除非刷新缓冲区或关闭文件,否则不会刷新缓冲区。