Insbesondere das Codebeispiel hier funktioniert großartig, aber nur, wenn die Zeichenfolge in einer Datei gespeichert ist.
Manchmal brauche ich es, um eine generierte Zeichenfolge zu verarbeiten (gespeichert in einer String-Variablen), aber ich habe Probleme, den dritten Parameter von fgets zu überzeugen, mit String-Variablen zu arbeiten, weil es ein Zeiger auf eine Dateistruktur .
Oder gibt es vielleicht ein funktionales Äquivalent zu fgets, das für Strings verwendet werden kann?
Irgendwelche Vorschläge? Danke!
Im Geiste des Hackens zusammen schnelle Antworten, hier ist "sgets", die ich gerade geschrieben habe. Es versucht, Fets zu emulieren, aber mit String-Eingabe.
Bearbeiten Es wurde ein Fehler behoben, auf den Monte hingewiesen hatte (Danke). Wütend tippen Sie ein Dienstprogramm, während Sie glauben, dass mindestens 15 andere Menschen mit genau der gleichen Idee verzweifelt dasselbe tun, führt nicht zu gut getesteten Code. Schlechtes ich. Die ursprüngliche Version enthielt das Newline-Zeichen für den folgenden Aufruf.
%Vor%Die Standard-C-Bibliothek bietet diese Funktionalität nicht.
Aber die sichere / schnelle I / O-Bibliothek von AT & T tut dies Aktivieren Sie Speicher-Streams und bietet auch Wrapper-Code für die Verwendung der FILE-API mit ihren Erweiterungen. Das letzte Update ist von Februar 2005, also haben sie entweder alle Bugs ausgearbeitet oder sie können es sich nicht mehr leisten, es jetzt zu warten, dass Luke Wilson ist auf der Gehaltsliste : - (
Das Paket kann hier heruntergeladen werden .
Wenn sich die Zeichenfolge bereits im Speicher befindet, können Sie in Zeilenumbrüche (entweder mit strtok
, wenn Sie die Zeichenfolge mutieren können und keine Notwendigkeit haben, sich um die erneute Eingabe zu kümmern, oder manuell% co_de verwenden) % und kopieren Sie selbst in einen separaten Puffer.)
Sie würden keine plattformabhängige Zeilenumbruch-Konvertierung erhalten, die Ihnen die stdio-Funktionen normalerweise bieten würden. Daher ist besondere Vorsicht erforderlich, wenn Ihre Zeichenfolgen im Speicher beispielsweise CRLF-Zeilenabschlusszeichen verwenden.
Sie müssen lediglich eine lineare Suche nach Zeilenenden in der Zeichenfolge durchführen. Hier ist ein kleines Programm, mit dem Sie Ihre eigene String-Streaming-Klasse schreiben können.
%Vor%