用C读取dat文件

时间:2012-11-22 22:18:39

标签: c fread

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

这是完全可能的。 Reading the manual表明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]));
}

答案 1 :(得分:1)

什么是dat文件?是的,你可以阅读二进制文件,看起来你理解它。

但是,既然你的目标不是只读文件,而是解析"它,你需要熟悉它的结构,知道在哪里寻找数据,显然你不熟悉文件的结构。