我正在为一个班级的项目工作。它应该用0到maxNum的随机数填充一个数组,记住最大的,获得avarage然后复制2个二进制文件的数据。这是相关部分:
FILE *pf, *rf;
int numCant = 50, maxNum = 100;
int n, i, avg = 0, m = 0;
pf = fopen("file.dat", "wb+");
rf = fopen("backupFile.dat", "wb+");
srand( floor(time( NULL )));
for (i = 0; i < numCant; i++) {
n = rand() % maxNum;
avg += n;
if (m < n)
m = n;
fwrite(&n, sizeof(int), 1, pf);
fwrite(&n, sizeof(int), 1, rf);
}
这适用于第一个文件(fp),但由于某种原因,第二个文件(rf)不会保存任何内容。该文件将被创建但仍为空。有人可以向我解释pf
和rf
之间的差异,以便只有一个有效吗?
答案 0 :(得分:2)
只需在每个fflush()
之后添加fwrite()
,就像这样
fwrite(&n, sizeof(int), 1, pf);
fflush(pf);
fwrite(&n, sizeof(int), 1, rf);
fflush(rf);
另外,请在完成后记住fclose()
每个文件,并检查fopen()
是否未返回NULL
,但无法保证打开文件写作会成功。
答案 1 :(得分:0)
您需要在写入操作后关闭文件。
fclose (pf);
fclose(rf);
答案 2 :(得分:0)
显然,OSX Finder奇怪地处理文件,在Finder(文件浏览器)上查看时文件显示为“零字节”,但是当我用文本编辑器打开文件时数据就在里面。我应该删除这个问题,因为代码毕竟不是我的问题吗?