leftstr()

Odin001

Grünschnabel
Kann mir bitte jemand beschreiben, was die Funktion genau macht?

Code:
void leftstr (char *z, char *q, int n)			
{
	for(n-=1;n>=0;n--)							
	{
		if(!*q) break;
		*(z++)=*(q++);
	}
	*z=0;
}

Ich weiß nur, sie funktioniert und extrahiert mir zusammen mit rightstr() aus einem String alle Nichtleerzeicheneinträge (Werte aus leerzeichengetrennter Datei).


Mfg, Odin001
 
Hi,
also die Funktion macht erstmal das wonach sie heißt...
Sie kopiert die ersten(linken) n Stellen q nach z...

Konkret tut sie die Schleife n mal abarbeiten und überprüft ob der aktuelle
Inhalt (im ersten Schleifen durchlauf ist es q[0] != '\0' ist.
Wenn q[0] == '\0' ist hört sie auf da es ja nix zu kopieren gibt, weil ein
string mit einem '\0' abgeschlossen ist...
Wenn nicht schreibt sie den aktuellen Inhalt auf den der Pointer q zeigt an
den Inhalt der aktuellen Stelle auf den der Pointer z zeigt. Danach werden die
Zeiger z und q um eins erhöht um die nächste Stelle im String zu kopieren bzw auf
das Ende von q zu untersuchen...
Wenn die Schleife dann fertig ist wird an den string noch eine '\0' angehängt
was angibt das der string z hier zu ende ist... Und somit stehen
die ersten n Stellen des strings q in z drin...

Ich hoffe ich konnts verständlich ausdrücken...

Gruß

RedWing
 
Zurück