Wörter kriegen mit strtok()

Hallo Leute,

Ich möchte einzelne Wörter aus einem String extrahieren, da dachte ich, die strtok() sei dafür eine gute Wahl. Außer einem Crash bringe ich aber nichts zuwege.
Dem Buch zufolge muß man beim zweiten mal eine Null für das erste Argument übergeben. Unten dran ist der Code.

lg
Martin B

//--------------------------------------------------
// tok.cpp

#include 
#include 
#include 
#include 

typedef const char \* CC;

// zwischen zwei Zeigern kopieren:
CC getWord(CC links, CC rechts)
 {
 char\* te = new char[rechts - links + 1];
 // Zeichen dazwischen kopieren:
 while (links %s", getWord(s, s+4));

 // alle kriegen:
 worteZerlegen(s);
 system("pause");
 return 0;
}

Hallo!

Ich möchte einzelne Wörter aus einem String extrahieren, da
dachte ich, die strtok() sei dafür eine gute Wahl. Außer einem
Crash bringe ich aber nichts zuwege.

Keine Lust auf’s Debuggen?

So auf den ersten flüchtigen Blick: Irgendwann ist p ja NULL, weil strtok nichts mehr findet. Trotzdem rufst Du mit dieser NULL noch die Funktion getWord() auf. Vielleicht knallt es dann.

Major

Ich möchte einzelne Wörter aus einem String extrahieren, da
dachte ich, die strtok() sei dafür eine gute Wahl.

Ja. Und deswegen verstehe ich grad nicht, wozu Du getWord hast. strtok bearbeitet Dir doch Deinen Quellstring schon so, dass es überall am Delimiter NULLbytes einfügt. strtok() liefert Dir also bereits das komplette Wort und nichts als das Wort.
Wobei auch immer klar sein muss, dass strtok() die Quelle verändert!

Gruß,
-Efchen

Hallo Major,

Keine Lust auf’s Debuggen?

Der Debugger von VC6 ist nicht so überzeugend. Ich stecke ein „getch()“ dazwischen rein, damit ich weiß, wo er gerade ist, und schreibe die Werte von Variablen in eine Logdatei. Oder ich gebe Töne aus, damit ich weiß, ob er bei dem „if“ drin war.

So auf den ersten flüchtigen Blick: Irgendwann ist p ja NULL,
weil strtok nichts mehr findet. Trotzdem rufst Du mit dieser
NULL noch die Funktion getWord() auf. Vielleicht knallt es
dann.

Hm, stimmt. Danke für den Tipp.
lg
Martin B

Hallo Efchen,

Ich möchte einzelne Wörter aus einem String extrahieren, da
dachte ich, die strtok() sei dafür eine gute Wahl.

Ja. Und deswegen verstehe ich grad nicht, wozu Du getWord
hast.

Da war ich mir ohnehin nicht sicher, ob die sein muß.

strtok bearbeitet Dir doch Deinen Quellstring schon so,
dass es überall am Delimiter NULLbytes einfügt. strtok()
liefert Dir also bereits das komplette Wort und nichts als das
Wort.
Wobei auch immer klar sein muss, dass strtok() die Quelle
verändert!

Aha, jetzt weiß ich schon mehr. Ich setze mich nochmal hin, vielen Dank.

lg
Martin B