Wie lese ich eine beliebig lange Zeile in C?

Ich hätte gerne das Äquivalent (in C) vongetline in C ++:

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

Gibt es eine Möglichkeit, so etwas in C zu tun? Ich suche nach etwas, das so aussieht:

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

BEARBEITEN: Ich habe mich für POSIX entschiedengetline funktioniere am ende da ich auf linux bin (laufeman getline wenn Sie nicht wissen, wovon ich spreche), aber Michael Burr lieferte eine Implementierung vongetline welches arbeitet auf anderen Betriebssystemen in denengetline ist standardmäßig nicht verfügbar. Auch wenn seine Implementierung nicht die effizienteste ist, die man sich vorstellen kann, macht sie die Arbeit so, wie ich will, und ich habe sie als Antwort auf meine Frage markiert.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage