Sehr umständlich. Du gehst alles mehrmals durch, obwohl man alles in einem Rutsch machen könnte.
Weiterhin liegt hier das von Forennutzer Sone so oft bemängelte X-Y-Problem vor. Du fragst nach X:
Stutzpeter schrieb:
ich möchte die Variable text bis zum "&" auslesen und die Zeichen davor in eine Datei schreiben, also dass nur noch Peter übrig bleibt.
Dabei war dein eigentliches Problem die ganze Zeit Y: Wie zerlegt man Zeichenketten der Form "Peter&nachname=Stutz&send=OK" in Vorname und Nachname?
Darauf hättest du sofort die kurze und gute Antwort erhalten, die 99% deines Programms überflüssig macht:
#include <stdio.h>
void print_first_and_last_name(const char *str)
{
char nachname[100], vorname[100];
if (sscanf(str, "%99[^&]%*[^=]=%99[^&]", vorname, nachname) == 2) // Hier passiert die Magie
printf("Vorname: %s\nNachname: %s\n", vorname, nachname);
else puts("Fehler beim Parsen");
}
int main()
{
// Demo
print_first_and_last_name("Peter&nachname=Stutz&send=OK");
print_first_and_last_name("Karl-Theodor Maria Nikolaus Johann Jacob Philipp "
"Franz Joseph Sylvester und noch ein paar Vornamen "
"um zu zeigen was passiert wenn die Zeichenkette zu"
" lang wird&nachname=Freiherr von und zu Guttenberg&send=OK");
return 0;
}
Man könnte sich hier auch den Umweg über die Variablen vorname und nachname sparen und die Namen direkt ausgeben, aber ich nehme weiterhin mal an, dass dein Y auch beinhaltet, dass du mit den Namen weiter arbeiten kannst, obwohl dein X bloß reine Ausgabe ist.