关于文件关闭的必要性
程序代码:// randomfile.c--使用fseek()随机访问文件
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
int main(void)
{
FILE *fp;
int data, count, array[MAX];
long offset;
// 为数组各元素赋值
for(count = 0; count < MAX; count++)
array[count] = count * 10;
// 以写入模式打开二进制文件
if ( (fp = fopen("C:\\Users\\david\\Desktop\\RANDOM.DAT", "wb") ) == NULL)
{
fprintf(stderr, "\nError opening file.");
exit(1);
}
// 将数组写入文件, 然后关闭文件
if ( (fwrite(array, sizeof(int), MAX, fp)) != MAX)
{
fprintf(stderr, "\nError writing data to file.");
exit(1);
}
//此处为什么一定要关闭文件?我用flush(fp)代替不行吗?#########################################################################################
fclose(fp);
// 以只读模式打开文件
if ( ( fp = fopen("C:\\Users\\david\\Desktop\\RANDOM.DAT", "rb") ) == NULL)
{
fprintf(stderr, "\nError opening file.");
exit(1);
}
/* 询问用户希望读取哪一个元素。
输入该元素并显示它, 用户输入-1时退出程序。 */
while (1)
{
printf("\nEnter element to read, 0-%d, -1 to quit: ", MAX-1);
scanf("%ld", &offset);
if (offset < 0)
break;
else if(offset > MAX-1)
continue;
// 将位置指示符移至指定元素
if (fseek(fp, (offset*sizeof(int)), SEEK_SET) != 0)
{
fprintf(stderr, "\nError using fseek().");
exit(1);
}
// 读入单个整数
fread(&data, sizeof(int), 1, fp);
printf("\nElement %ld has value %d.", offset, data);
}
fclose(fp);
return(0);
}请看程序清单中的无数个###标记处









