-2

我想知道是否可以读取我没有创建的 dat 文件。据我所知,该fread函数需要一个结构记录,但由于我没有创建这个 dat 文件,所以我不知道该记录有哪些字段。

提前致谢。

4

2 回答 2

3

这是完全可能的。阅读手册会发现,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]));
}
于 2012-11-22T22:22:38.730 回答
1

.dat 文件是什么?是的,您可以读取二进制文件,并且看起来您理解它。

但是由于您的目标不仅仅是读取文件,而是“解析”它,因此您需要熟悉它的结构才能知道在哪里查找数据,显然您不熟悉文件的结构。

于 2012-11-22T22:20:46.723 回答