Wie zu extrahieren Wörter aus einem Satz, effizient in C?
Ich brauche eine effiziente Funktion, die Extrakte ersten Sekunde und der rest des Satzes in drei Variablen.
- Tis eine doppelte - stackoverflow.com/questions/1483206/... - aber nicht genau
- "on-disk" ist ein Wort oder zwei Wörter?
- Es ist nur ein char
- Meinst du, dass der Algorithmus nehmen würde, "abcd" und teilen Sie es in 'a', 'b', und "cd" ?
- Nein. "Katze frisst viele Ratten" geben sollte, "Katze", "isst" und "viele Ratten"
- Ok, dann, meine Lösung sollte funktionieren. Probieren Sie es aus.
- Ich befestigte das Beispiel, versuchen Sie es erneut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach Weg: Nutzen Sie strtok() oder strtok_r die ersten zwei tokens, die entfernen Sie Sie aus dem string, also die Zeichenfolge selbst wird Ihre Dritte token, den Sie gesucht haben.
Harte Weg: Analysieren Sie sich selbst 🙁
Strtok ist in der C-string-Bibliothek, und mutieren Ihre ursprüngliche Zeichenfolge so vorsichtig sein, kopieren Sie die Zeichenfolge zuerst, wenn es braucht, um intakt bleiben.
Möglich Beispiel:
Diese sollte gut funktionieren und werden threadsicher sind mit den original-string unmutated.
strtok()
strtok
, so ist es immer noch eine Antwort.Müssen Sie zum definieren der Trennzeichen erste. Es gibt ein paar Probleme mit
strtok
(es ändert sein argument, für eine, die möglicherweise landen Sie in Schwierigkeiten). Lese ich lieber in der Zeichenfolge, und führen Sie einen benutzerdefinierten parser, der kann im Bereich vonsscanf
zu einem ausgewachsenen parser. Bitte etwas mehr Details.sscanf()
gut funktionieren würde, da ich erwarte, dass "Worte" bedeutet "alles, was nicht whitespace-Zeichen," dass der umwandlungsspezifikator einfach, und sollten Sie ordentlich, vermeiden Sie all die Probleme mitstrtok()
und Freunde.