Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Sep 2008 06:32:56 -0700 (PDT)
From:      Unga <unga888@yahoo.com>
To:        Giorgos Keramidas <keramida@ceid.upatras.gr>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: How to split a C string by a string?
Message-ID:  <417898.61773.qm@web57005.mail.re3.yahoo.com>
In-Reply-To: <87wshboz40.fsf@kobe.laptop>

next in thread | previous in thread | raw e-mail | index | archive | help
--- On Wed, 9/17/08, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:

> From: Giorgos Keramidas <keramida@ceid.upatras.gr>
> Subject: Re: How to split a C string by a string?
> To: unga888@yahoo.com
> Cc: freebsd-questions@freebsd.org
> Date: Wednesday, September 17, 2008, 6:17 PM
> On Wed, 17 Sep 2008 00:45:46 -0700 (PDT), Unga
> <unga888@yahoo.com> wrote:
> > Hi all
> >
> > I'm writing an C application on FreeBSD 7+. I need
> to split a string
> > by another string (ie. the delimiter is
> "xxx") similar to strtok split
> > a string by a single char. Is there a standard
> function or is there a
> > FreeBSD functions for this?
> 
> You can use strstr() to look for the "xxx"
> delimited and split that that
> point:
> 
>   % cat -n foo.c
>        1  #include <stdio.h>
>        2  #include <string.h>
>        3
>        4  int
>        5  main(void)
>        6  {
>        7          char text[] = "Hello string
> world";
>        8          char delim[] = " string ";
>        9          size_t dlen = sizeof(delim) /
> sizeof(delim[0]) - 1;
>       10          char *p;
>       11
>       12          p = strstr(text, delim);
>       13          if (p == NULL)
>       14                  return 0;               /* No
> match */
>       15
>       16          printf("First part = 
> \"%.*s\"\n", p - text, text);
>       17          printf("Second part =
> \"%s\"\n", p + dlen);
>       18          return 0;
>       19  }
>   % cc -std=iso9899:1990 -O2 -Wall foo.c
>   % ./a.out
>   First part =  "Hello"
>   Second part = "world"
>   %

Thank you very much for the reply. That is, there is no existing split function. So I got to write to my own :)

Best regards
Unga


      



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?417898.61773.qm>