В main
у вас есть объект с именем str
типа char*
.read_line
принимает значение указателя в качестве параметра, но не изменяет сам указатель.Это означает, что независимо от того, что произойдет, значение str
все равно будет NULL
, когда оно достигнет printf
s в main
Один из подходов состоит в передаче указателя на ваш объект-указательвместо его значения.
int read_line(char **str)
{
...
/* Get the first line of the file. */
line_size = getline(str, &line_buf_size, fp);
printf("%s", *str);
...
}
Таким образом, str
будет изменено на getline