Zum Inhalt springen

Speicherzugriffsfehler bei strtok


Kadaj

Empfohlene Beiträge

Hallo, ich bin grade dabei ein Telefonbuch zu schreiben. Ich dachte auch, ich sei endlich fertig, bis ich zufällig einen Eintrag ohne Vorname eingegeben habe. Dann steht in meiner Ausgabedatei in einer Zeile:

Klaus;;035247889

Wenn ich nun strtok aufrufe:


if( i == 1 )
zeiger = strtok( puffer,";" ); /* für das erste Element */
else
{
printf("kurz vor strtok...\n");
zeiger = strtok( NULL,";\n" ); /* für 2. und 3. Element */
}
[/PHP]

dann bekomme ich einen Speicherzugriffsfehler, beim leeren Eintrag.

puffer ist ein char, wo der ganze string, also:

[PHP]Klaus;;035247889

drinne steht. Aber wie kann ich den Speicherzugriffsfehler von strtok umgehen, wenn zwei Trennzeichen hintereinander stehen?:(

Hat jemand eine Idee?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Achso, verstehe. Was macht denn strtok, wenn gleich am Anfang mein Trennzeichen steht? Also


;Hermann;23434
[/PHP]

Springt er in dem Fall auch einfach weiter, oder gibt er einen Leerstring zurück? Immerhin folgen hier keine 2 Trennzeichen hintereinander.

Der Fehler liegt nicht an strtok, sondern daran, was du mit dem Rückgabewert machst.

Also ist es am besten, ich lasse garnicht erst zu, dass man Name oder Vorname nicht eingeben muss, oder gibt es eine bessere Lösung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Achso, verstehe. Was macht denn strtok, wenn gleich am Anfang mein Trennzeichen steht?
Ein oder mehrere Trennzeichen am Anfang werden übersprungen. strtok würde also beim ersten Aufruf "Hermann" zurückgeben.

Also ist es am besten, ich lasse garnicht erst zu, dass man Name oder Vorname nicht eingeben muss, oder gibt es eine bessere Lösung?
Ich würde dir empfehlen, nicht strtok zu benutzen. Diese Funktion hat ein paar unangenehme Eigenschaften, wie z.B. dass sie den verarbeiteten String verändert und nicht ablaufinvariant ist.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...