Обеспечивает ли ваша среда функцию getline(3)
?Если так, я бы сказал, пойти на это.
Большое преимущество, которое я вижу, состоит в том, что он выделяет сам буфер (если вы хотите) и realloc()
буфер, который вы передаете, если он слишком мал.(Таким образом, это означает, что вам нужно передать что-то, полученное из malloc()
).
Это избавит от некоторой боли fgets / fgetc, и вы можете надеяться, что тот, кто написал библиотеку C, реализующую это, взялпозаботьтесь о том, чтобы сделать его эффективным.
Бонус: на странице руководства по Linux есть хороший пример того, как эффективно его использовать.