String mehrfach splitten
-
Danke für deine Antwort
Zu 1:
Es sind niemals Lücken vorhanden.
Zu 2:
Leerzeichen sind auch nicht dadrinne. Nur so, wie es im Beispiel steht.
Zu 3:
Als String wäre es für mich am brauchbarsten.
Hauptsache, ich würde das überhaupt erstmal gesplittet bekommenGruß Hauke
-
Sehr einfach:
char buffer[ZEILEN][TAGS][MAXSTR], str[]="<beispiel id=\"test\" bsp1=\"false\" bsp2=\"1234\" bsp3=\"0\" ...",*p=str; int tag=0,zeile=0; while( p=strstr(p,"=\"") ) { strncpy(buffer[zeile][tag],p+2,strchr(p+2,'\"')-p-1); strchr(buffer[zeile][tag++],'\"')=0; ++p; }
Für Stringwerte ohne endendes '=' Zeichen und dann für jede weitere Zeile ebenso zzgl. ++zeile.
-
@Wutz
strchr kann auch NULL zurück geben und Zeile8 macht nicht das, was du erwartest (im Grunde ist es ein NOOP). Außerdem fliegt der Code um die Ohren, wenn MAXSTR zu klein ist (du hast keine Überprüfung eingebaut) und strncpy ist sowieso eine blöde Funktion, die man eigentlich nie nutzen sollte (macht in vielen Fällen zu viel \0 oder gar zu wenig \0 ans Ende. Ich weiß echt nicht, was sich das Komitee bei strncpy gedacht hat).
-
Danke für die Antwort.
Der Code Funktioniert so leider auch nicht. (gibt Errors)
Ich habe in der 8 Zeile noch ein = mehr gemacht, dann kommen keine Errors, doch es funktionier irgendwie auch nicht.
-
Es fehlte noch ein '*':
http://codepad.org/4o8LcypjUnd noch kürzer und vielleicht auch verständlicher:
http://codepad.org/888hcClvDie Dimensionierung musst du selbst gestalten entsprechend deinen Anforderungen und bei Variante 2 auf die Initialisierung achten.
-
Super, funktioniert mit deiner Vorgabe schon toll
Wie bekomme ich denn ein char Beispiel[123]; da rein?
-
? Indem du
p = Beispiel;
vor die while-Schleife setzt? Ich weiß nicht genau, was du meinst.
-
Tur mir leid, ich war gerade in Eile.
Ich meine wie ich meinen String darein bekomme, der "zerlegt" werden soll.
Der wird aus einer Datei geholt, und soll danach in eine andere Datei reingeschrieben werden, aber umformatiert.
-
Tut mir wirklich leid, dass ich nochmal posten muss, aber edit geht bei mir nicht.
(Benutze safari, und es kommt immer, dass die Seite nicht gefunden wurde)Naja, auf jeden Fall habe ich nach einem bischen ausprobieren nun hinbekommen,
meinen String einzufügen. Nun möchte ich, dass das gesplittete nicht ausgegeben wird, sondern nochmal gespeichert in einer Datei, aber das probiere ich jetzt erstmal.Danke schon mal bis hier
-
Tut mir wirklich leid, dass ich nochmal posten muss, aber edit geht bei mir nicht.
(Benutze safari, und es kommt immer, dass die Seite nicht gefunden wurde)Naja, auf jeden Fall habe ich nach einem bischen ausprobieren nun hinbekommen,
meinen String einzufügen. Nun möchte ich, dass das gesplittete nicht ausgegeben wird, sondern nochmal gespeichert in einer Datei, aber das probiere ich jetzt erstmal.Danke schon mal bis hier