gpt4 book ai didi

c - C编程语言如何在读入数组之前嗅探二进制文件中的记录数?

转载 作者:行者123 更新时间:2023-12-01 23:15:05 25 4
gpt4 key购买 nike

例如,在打开文件并将记录读入数组之前,如何更好地判断二进制文件中有多少条记录?

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)) 的循环,或任何类似的循环实际上都保证无法正常工作(通常它会“读取”最后一条记录两次)。

关于c - C编程语言如何在读入数组之前嗅探二进制文件中的记录数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1822332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com