Hallo,
eigentlich sollte ich ja bei solch einem schönen Wetter nicht vor dem PC rumsitzen, aber ich muss das noch hinbekommen.
Ich habe einen String (also char-Array), den ich erstmal teilen muss, da dort einiger Schrott drin ist. Danach will ich den String mittels eines Trennzeichen in mehrer Strings (char-Arrays) teilen. Leider klappt das mit den mehrdimensionalen arrays einfach nicht. Hoffentlich kann mir jemand helfen...
Falls es wirklich nur ein einzelnes Trennzeichen ist,
kannst Du es Dir und der CPU auch leicht machen:
- Den gesamten String kopieren (nur, falls Du den
Empfangspuffer noch anderweitig brauchst, ansonsten
kann die Manipulation direkt im Empfangspuffer geschehen...) - Alle '#' in der Kopie durch (char)0 ersetzen.
- Ein Pointer-Array vom typ char** anlegen, welches
auf die jeweiligen Teilstring-Fragmente zeigt.
Viele Grüße
Andreas
Bsp:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void) {
char empfangspuffer[] = "aklsdfjlkasdjflkasjdflkasdj#<start>#6#920FC1CD#Herr#Mustermann";
char trennzeichen = '#';
char *kopie = strdup(empfangspuffer); // Damit Original unveraendert bleibt.
char **result; // Hier kommen die Pointer auf die Teilstrings hinein
int n=0; // ... und hier die Anzahl
char *tmp;
int i;
for(tmp=kopie; *tmp; ++tmp)
if(*tmp==trennzeichen) { *tmp=(char)0; ++n; }
++n; // Es gibt einen Teilstring mehr als '#'s
result = (char**)malloc(n*sizeof(char*));
tmp = kopie;
for(i=0; i<n; ++i) {
result[i] = tmp;
tmp += strlen(tmp)+1;
}
// Ergebnisausgabe
printf("Anzahl der Teilstrings: %i\n", n);
for(i=0; i<n; ++i)
printf("Teilstring %i: %s\n", i+1, result[i]);
// ggf. aufraeumen
free(result);
free(kopie);
return 0;
}