Einlesen bis doppelter Zeilenumbruch

Wie kann ich das denn in C machen? Denn da kann ich das doch so nicht Zeilenweise einlesen, oder etwa doch?

Weil das Problem bei strtok(NULL, "\r\n") bzw auch (NULL, "\r\n\r\n") ist, dass der die Leerzeile gleich komplett überspringt, oder sehe ich das falsch?

EDIT:
Ich habs jetzt gerade so gelöst:
ich lege mir am Anfang eine temporäre Datei an, wo ich die Anfrage speicher.

Dann les ich die Datei folgendermaßen aus:
Code:
while(!feof(datei)) {
	fgets(line, 256, datei);
	if(d == 1) {
		strcat(put, line);
	}
	if(line[0] == '\r') {
		d = 1;
	}
}

Ist natürlich nicht die beste Art, mit der temporären Datei. Wenn da jemand noch nen anderen Tipp hat, wärs super.
 
Zuletzt bearbeitet:
Die std::streams sind denkbar unbrauchbar für echte Arbeit.
Du hast da doch offenbar schon einen Puffer mit der ganzen Anfrage im Speicher. Da suchst du nach dem ersten Vorkommen von "\r\n\r\n". Und schon hast du das Ende des Headers und den Anfang des Content gefunden.
 
Die std::streams sind denkbar unbrauchbar für echte Arbeit.

Ich programmiere ja jetzt doch auch schon ziemlich lange und masse mir jetzt mal an zu sagen dass darunter auch ein ganz wenig echte Arbeit war. Dabei habe ich bis jetzt alles mit streams ohne Probleme hinbekommen. Was verleitet dich denn zu einem solchen pauschalen Rundumschlag?
 
Da ist auch viel persönliche Vorliebe drin, aber ich finde die Syntax ist katastrophal. Für simple Text-Leserei und -Schreiberei sind sie ja ganz nett, so lange keine Leerzeichen drin sind.
Die C-Format-Strings sind teilweise knifflig zu behandeln, aber dafür wird eine Textmaske nicht in ihre Einzelteile zerrissen und verteilt.

Bei binärem kann man sie ziemlich vergessen, da ist man bei der Syntax dann sofort bei FILE*-Funktionen (bleibt ja nur .read und .write).

Im Nachhinein ist man immer schlauer, aber ich meine, die Streams hätte man besser designen können.
 
Zurück