我想知道是否可以读取我没有创建的 dat 文件。据我所知,该fread
函数需要一个结构记录,但由于我没有创建这个 dat 文件,所以我不知道该记录有哪些字段。
提前致谢。
这是完全可能的。阅读手册会发现,fread
它只需要一个指向它尝试读取数据的内存的指针,并返回它成功读取的字节数。
确保以二进制模式打开文件。
例如:
FILE * fp = fopen("somefile.dat", "rb");
char buf[10];
size_t n = fread(buf, 10, 1, fp);
if (n > 0)
{
/* we succeeded at reading n bytes,
* which are now in buf[i] for i in [0, n)
*/
}
在实际代码中,您通常会根据序列化格式读取单个片段,或者如果您想读取整个文件内容,您将有一个循环:
char buf[4096];
for (size_t n; (n = fread(buf, sizeof buf, 1, fp)) != 0; )
{
/* process buf[i] for i in [0, n). For example: */
for (size_t i = 0; i != n; ++i)
printf("0x02X ", (unsigned char)(buf[i]));
}
.dat 文件是什么?是的,您可以读取二进制文件,并且看起来您理解它。
但是由于您的目标不仅仅是读取文件,而是“解析”它,因此您需要熟悉它的结构才能知道在哪里查找数据,显然您不熟悉文件的结构。