带有fgets的分段错误

问题描述 投票:0回答:1

我正在做一个简单的程序,仅用于打开文件并逐行打印其内容,但是在用“ gcc -o test pruebas.c”编译时,出现了“ Segmentation fault(core dumped)”(我的文件称为pruebas .c),然后从Windows 10在Ubuntu控制台中运行该程序,可能是什么问题?

这是我编写的代码:

int main()
{
    char* line = NULL;
    FILE* file = fopen("D:/Documents/Uni/blur.lp", "r");
    while(fgets(line, sizeof(line), file))
    {
        printf("%s", line);
    }
    fclose(file);
    return(0);

((“。lp”扩展名是我必须为家庭作业开发的图像格式的扩展名)

c heap
1个回答
0
投票

这里是您程序的改进版本,它考虑了以上注释。它还使用预处理器宏来定义行大小和文件名:

#include <stdio.h>
#include <stdlib.h>

#define LINE_SIZE 100
#define FILE_NAME "D:/Documents/Uni/blur.lp"

int main(int argc, char **argv)
{

    char line[LINE_SIZE] ;
    FILE *file ;

    file = fopen(FILE_NAME, "r");
    if (file == NULL)
    {
      perror("cannot access " FILE_NAME);
      return 1;
    }

    while(fgets(line, LINE_SIZE, file))
    {
        printf("%s", line);
    }

    fclose(file);
    return(0);

}
© www.soinside.com 2019 - 2024. All rights reserved.