c之C编程语言如何在读入数组之前嗅探二进制文件中的记录数
dyllove98
阅读:192
2025-06-02 22:19:02
评论:0
例如,在打开文件并将记录读入数组之前,如何更好地判断二进制文件中有多少条记录?
MyFile = fopen("DATA.dat", "rb");
i = 0;
while (feof(MyFile) == 0) {
fread(&tempReadingRecord,sizeof(tempReadingRecord), 1, file);
if (feof(MyFile) == 0 {
i++;
}
}
fclose(MyFile);
}
printf("%d", i); /* does work to find out how many records but optimal? */
请您参考如下方法:
鉴于您显然正在处理固定大小的整个记录文件,您可以查找文件末尾,获取当前位置,然后除以记录大小。理论上,这有一个可移植性问题(二进制文件 可以 包含附加到其末尾的任意数量的 NUL)但实际上你不会在大多数常见系统上遇到问题(AFAIK,那发生了主要是在 CP/M 上,它没有明确存储文件长度,只是一些 block ,所以文件的末尾总是被填充以填充最后一个 block )。
顺便说一句,您读取记录的循环有一个问题——事实上,几乎所有类似while (!feof(file)) 的循环,或任何类似的循环实际上都保证无法正常工作(通常它会“读取”最后一条记录两次)。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



