c - 倒带文件后真的很奇怪的段错误

标签 c core fseek

所以我打开一个文件,转到末尾查看它有多长,然后返回到开头会导致段错误(核心转储)。天哪?

...
FILE *passkey;
passkey = fopen("pass.key", "r+");
fseek(passkey, 0, SEEK_END);
filesize = ftell(passkey);
rewind(passkey);
...

倒带导致段错误。它对开头的 fseek 执行相同的操作。为什么要这样做?

最佳答案

C 中 fseek 函数的段错误几乎总是由 fopen 失败引起。确保您尝试打开的文件确实存在。如果您偶然依赖 r+ 参数为您创建新文件,那么您就错了,r+ 不会在 C 中创建新文件。尽可能尝试验证 fopen 的返回值。以防万一您不知道倒带只是一个转到文件开头的 fseek,这就是为什么您也可能在那里遇到问题。希望这有帮助!

祝你编码愉快!

关于c - 倒带文件后真的很奇怪的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42544415/

相关文章:

c - C 中的 fread fwrite fseek

c - 使用 fseek 和 fread

c - 为什么 fseek 永远不会返回 -1

c++ - 清除标准输入缓冲区(内存占用)

c - 简单的GCD程序无法运行

C 风格类型注解与其他注解

c - 如何使用 lldb 有效地回溯段错误?

c - C 程序的段错误

java - 循环中的局部变量声明

c - 二进制到整数,需要有关此方法的建议。