使用 fopen 时出现段错误
Segfault when using fopen
我在使用 fopen 函数时出现分段错误。
如果我不在结构中使用 file
则不会发生错误。
我猜段错误来自使用结构
中的file
int main(int argc, char **argv)
{
t_paint *paint;
if (argc != 2)
{
write (1, "Error: argument\n", 16);
return (1);
}
paint->file = fopen(argv[1], "r");
if (paint->file == NULL || parsing(paint))
{
write(1, "Error: Operation file corrupted\n", 32);
free(paint->map);
fclose(paint->file);
return (1);
}
output(paint);
fclose(paint->file);
free(paint->map);
return (0);
}
t_paint
typedef struct s_paint
{
char *map;
int widthMap;
int heightMap;
float firstX;
float firstY;
float w;
float h;
char typeFile;
char background;
char filler;
FILE *file;
} t_paint
t_paint *paint;
if (argc != 2)
{
write (1, "Error: argument\n", 16);
return (1);
}
paint->file = fopen(argv[1], "r");
您修改了 paint
指向的对象的 file
成员。但是 paint
没有指向任何东西——你从来没有给它赋值或创建 t_paint
.
的实例
我在使用 fopen 函数时出现分段错误。
如果我不在结构中使用 file
则不会发生错误。
我猜段错误来自使用结构
file
int main(int argc, char **argv)
{
t_paint *paint;
if (argc != 2)
{
write (1, "Error: argument\n", 16);
return (1);
}
paint->file = fopen(argv[1], "r");
if (paint->file == NULL || parsing(paint))
{
write(1, "Error: Operation file corrupted\n", 32);
free(paint->map);
fclose(paint->file);
return (1);
}
output(paint);
fclose(paint->file);
free(paint->map);
return (0);
}
t_paint
typedef struct s_paint
{
char *map;
int widthMap;
int heightMap;
float firstX;
float firstY;
float w;
float h;
char typeFile;
char background;
char filler;
FILE *file;
} t_paint
t_paint *paint;
if (argc != 2)
{
write (1, "Error: argument\n", 16);
return (1);
}
paint->file = fopen(argv[1], "r");
您修改了 paint
指向的对象的 file
成员。但是 paint
没有指向任何东西——你从来没有给它赋值或创建 t_paint
.