Moin Martin!
char *string = "NAME,ORT,ALTER";
char *name; // soll enthalten NAME
char *ort; // soll enthalten ORT
char *alter; // soll enthalten ALTER
sscanf(string, "%s,%s,%s", name, ort, alter);Hier ist nun so, dass die variable name dann gleich NAME,ORT,ALTER enthält. Wie ist das möglich?
Das ist mir auch schleierhaft. Denn *dieses* Beispiel müsste tatsächlich einen Segmentation Fault erzeugen. ;-)
Die oben deklarierten Zeiger name, ort, alter sind nicht initialisiert. Sie zeigen daher auf zufällige Speicherbereiche, und sscanf() kopiert dann Zeichen für Zeichen aus dem Eingabestring in die durch name, ort, alter referenzierten Bereiche - also buchstäblich "irgendwo" hin.Ich würde aber grundsätzlich von der Verwendung der scanf-Funktionen abraten. Denn sie haben keine "eingebaute" Bereichsprüfung, können also nicht feststellen, ob der Puffer, auf den die übergebenen Zeiger vereisen, auch wirklich groß genug für das Ergebnis ist (bzw. ob es überhaupt ein gültiger Bereich ist). Funktionen, die eine Eingabe untersuchen und auswerten, schreibe ich mir lieber selbst - und zwar immer so, dass sie auch eine Bereichsüberprüfung vornehmen können oder alternativ die maximal zulässige Anzahl Zeichen von der aufrufenden Funktion übermittelt bekommen.
Erstmal danke für die Antwort - leider kann ich mir als Anfänger noch nicht auf alles einen Reim machen. Könntest du die letzte Aussage vielleicht etwas konkretisieren - wie würde man mein Ziel praktisch am besten erreichen?
Danke für die Mühe!