C on mac中的分段故障11

  • 本文关键字:分段 故障 on mac c
  • 更新时间 :
  • 英文 :


我无法从创建的文件中读取数据。这是一个非常简单的代码,我无法理解为什么它不起作用。我刚转到mac,安装了开发者的命令行工具。

我的代码是:

int main()
{
    FILE *fp;
    int lines = 0;
    char *data;
    data = (char *)malloc(1000);
    data = NULL;
    fp = fopen("1.txt", "r");
    while (fgets(data, 1000, fp) != NULL)
    {
        printf("%sn", data);
        lines++;
    }
    printf("Lines = %dn", lines);
    free(data);
    fclose(fp);
    return 0;
}

您为data分配空间,然后立即泄漏。

char *data;
data = (char *)malloc(1000);
data = NULL;

然后将fgets()NULL指针一起使用,这将导致未定义的行为。

fgets(data, 1000, fp)

也许你应该删除这行代码?

data = NULL;

最新更新