M
So sollte es gehen:
#include <stdio.h>
char *split(char *s, char *dest, int dest_len)
{
int k = 0;
if (*s == '\0') return NULL;
while (--dest_len > 0 && *s && (*s != '|' || k != 0)) {
if (*s == '<') ++k;
if (*s == '>') --k;
*dest++ = *s++;
}
*dest = 0;
return (*s == '|') ? s+1 : s;
}
int main(void)
{
char *str = "ghlkgjhg|hlöhölkhlö|lkihlök|<abcdefgh|ijklmn>|öliphopih", *t, p[70];
for (t = str; ((t = split(t, p, sizeof p)) != NULL); )
printf("'%s'\n", p);
return 0;
}