Jak mogę odczytać dowolnie długą linię w C?

Chciałbym mieć odpowiednik (w C)getline w C ++:

std::string s;
getline(std::cin,s); // reads an arbitrarily long line and
                     // inserts its contents on s

Czy jest jakiś sposób na zrobienie czegoś takiego w C? Szukam czegoś, co wygląda tak:

char* s;
getline(stdin,s); // allocates the space necessary to fit the read
                  // line and make s point to it

EDYTOWAĆ: Postanowiłem użyć POSIXgetline funkcja na końcu, ponieważ jestem na Linuksie (uruchomman getline jeśli nie wiesz o czym mówię), ale Michael Burr przedstawił implementacjęgetline który działa na innych systemach operacyjnych, w którychgetline jest domyślnie niedostępny. Nawet jeśli jego implementacja nie jest najskuteczniejsza, można ją wykonać tak, jak chcę, więc oznaczyłem ją jako odpowiedź na moje pytanie.

questionAnswers(2)

yourAnswerToTheQuestion