gpt4 book ai didi

c - 使用 "fgetc"过早发送 EOF

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:57 26 4
gpt4 key购买 nike

我正在编写一个打印出 Firefox cookies.sqlite 文件的程序。

int printfile(FILE* cookiesfile)
{
int c;
//fseek(cookiesfile,0x18260,SEEK_SET);
do{
c=fgetc(cookiesfile);
printf("%c",c);
}while(c != EOF);
printf("\n\n%x",c);
if (ferror(cookiesfile) != 0)printf("\nchareror!\n");
return 0;
}

代码在文件末尾之前的不同位置返回 EOF。在十六进制编辑器或记事本中打开文件显示文件大得多。 EOF 总是出现在相同的点。跳过这些点,读取数据直到下一个 EOF。出现 EOF 的字符以前经常被 fgot 而没有任何问题(即 0x1a0x13)。

检查 ferror() 的结果没有帮助(因为不存在错误)。

我不确定如何进行调试过程,有人可以引导我朝着正确的方向前进吗?

最佳答案

在不知道您如何打开文件的情况下,我们不能确定,但​​是 SQLite 数据库文件不是文本文件。如果您在 Windows 机器上以文本模式打开 SQLite 数据库文件,每次您尝试读取包含值 26 (0x1A , Ctrl-Z) (并且没有理由假设这些位置将保持静止)。有许多免费(和商业)工具可用于处理 SQLite 数据库文件,其中最重要的是 SQLite Manager plugin。对于 FireFox 本身。如果你仍然想用 C 来做,我建议你去 the SQLite website ,下载代码,阅读介绍和文档。

关于c - 使用 "fgetc"过早发送 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18225199/

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