C 代码中 fseek 行中的分段错误



我一直收到分割错误,并将其缩小到一行(这是下面代码中的"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,但总是得到分割错误。有谁知道那条线(或者另一条线,如果它实际上不是那条线)有什么问题?

检查对fopen()的调用是否失败:

f_in = fopen(argv[1], "rb");
if ( NULL == f_in )
{
    // handle error
    .
    .
    .

假设实际代码在访问 argv[] 之前检查 argc,并且如果不存在参数,则显示适当的"usage"消息。

有必要检查来自 fopen(和 fseek)的返回值以确保操作成功。

如果这段代码在 fseek() 上失败,几乎可以肯定 fopen 失败了。

导致f_in包含 NULL 而不是指向文件描述符对象的有效指针。

相关内容

  • 没有找到相关文章

最新更新