2017-02-07 8 views
-1

Lassen Sie uns sagen, dass wir die folgende Voraussetzungen erfüllt sein:Split eine Zeichenfolge in Standard C ohne strtok() und strsp()?

char mystring[PMAX]; 
char strncpy(mystring, "hello;this;is;my;string;how;are kljasdf; you?" , PMAX); 

Split ein String in Standard C ohne strtok() und strsep()? Welchen zuverlässigen, tragbaren oder universellen C-Standard empfehlen Sie, den gegebenen Teil des Strings zurückzugeben?

Let‘sagen:

strncpy(myoutput, strsplit(mystring, ';' , 6), PMAX); 

Der Inhalt myoutput wäre, wie (< - das ist die sechste ist, mit ';' Begrenzer).

Am besten wäre es nur diese zu haben und nur leicht auf jeder Maschine tragbar zu sein (e):

#include <string.h> 
#include <stdlib.h> 
#include <stdio.h> 

Ich freue mich Ihnen zu hören.

+0

Analysieren Sie die Zeichenfolge "manuell". Charakter für Charakter. –

+2

Verwenden Sie eines von 'strspn()', 'strcspn()' oder 'strpbrk()'? –

+0

Soll die Eingabezeichenfolge geändert werden oder nicht? Funktionen wie 'strtok()' und 'strsep()' modifizieren die zu analysierende Zeichenkette, indem sie das Trennzeichen mit einem Nullbyte versehen und Ihnen nicht sagen, welches Zeichen vorhanden war, selbst wenn eines von mehreren Zeichen die Zeichen markieren könnte Ende der Zeichenfolge. Die Funktionen 'strcspn()' und 'strpbrk()' geben Ihnen die Position des Trennzeichens, ohne die Quellzeichenfolge zu ändern. Aus Ihrer vorgeschlagenen Verwendung scheint der Code in 'strsplit()' das sechste Semikolon durch eine Null zu ersetzen und das Zeichen nach dem fünften Semikolon zu melden. _ [... Fortsetzung ...] _ –

Antwort

0

Nichts geht über eine Zustandsmaschine für vorhersagbares Parsing.

Verwandte Themen