我想知道是否可以读取我没有创建的dat文件。
据我所知fread
函数需要一个struct记录,但由于我没有创建这个dat文件,我不知道该记录有哪些字段。
提前致谢。
答案 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文件?是的,你可以阅读二进制文件,看起来你理解它。
但是,既然你的目标不是只读文件,而是解析"它,你需要熟悉它的结构,知道在哪里寻找数据,显然你不熟悉文件的结构。