【发布时间】:2015-04-23 23:33:35
【问题描述】:
我不断收到分段错误,并将其缩小到一行(它是下面代码中的“fseek”行 - 我将它下面的所有内容都注释掉了,但仍然得到错误,但当我没有得到它时注释掉那一行。)这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *f_in, *f_out;
f_in = fopen(argv[1], "rb");
fseek(f_in, 0, SEEK_SET);
return 0
}
所有其他代码看起来都很好,所以我没有包含它。我尝试在 fseek 行之前添加一行:“fseek(f_in, 0, SEEK_END);”。我还尝试将 0 更改为其他数字,并在 fseek 之前进行 fread,但始终遇到分段错误。有谁知道那条线有什么问题(或不同的线,如果它实际上不是那条线)?
【问题讨论】:
-
2 个明显的问题:1-您没有检查
argc以确保有argv[1]。 2 - 在你去尝试使用它之前,你没有检查fopen()的结果。解决这些问题并与我们联系... -
您确实知道,在调用 fopen 之后,文件指针立即位于文件的第一个字符处。所以不需要在文件的第一个字符处调用 fseek()。
-
哦,有道理。好吧,由于 fseek 导致了问题,而我实际上并不需要它,这解决了分段错误,谢谢 :)
-
(@John3136,是的,我意识到这一点。我没有故意包含这些部分,因为虽然包含它们是一种很好的编码实践,但它们与我关注的错误无关。否则好的建议,谢谢)
标签: c segmentation-fault