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 - 在每次迭代中工作 g_hash_table_foreach

java - 实际上如何将值分配给由构造函数初始化的对象引用(实际内存,由new分配)?

c - fseek 在打开的文件指针上失败

c - fseek() 和从文件读取的问题

c - 有没有一种特殊的方法可以从 c 中的文件中删除记录而不创建它的副本?

c - C 删除字符串的特定部分

c++ - cygwin1.dll 丢失 - 无法运行程序

java - 此 C OpenSSL 加密函数的 Java JCE 等价物是什么?

ios - 如何改变CALayer动画的方向

java - 删除所有键后无法将键添加到字典中