尽管文件与其他有效的文件相同,但文件并没有用数据写入

时间:2015-03-09 04:27:47

标签: c file

我正在为一个班级的项目工作。它应该用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)不会保存任何内容。该文件将被创建但仍为空。有人可以向我解释pfrf之间的差异,以便只有一个有效吗?

3 个答案:

答案 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(文件浏览器)上查看时文件显示为“零字节”,但是当我用文本编辑器打开文件时数据就在里面。我应该删除这个问题,因为代码毕竟不是我的问题吗?