How to split a C string by a string?

Murray Taylor MTaylor at
Thu Sep 18 07:20:44 UTC 2008

> -----Original Message-----
> From: owner-freebsd-questions at
[mailto:owner-freebsd-questions at] On Behalf Of Giorgos
> Sent: Thursday, 18 September 2008 1:49 AM
> To: unga888 at
> Cc: freebsd-questions at
> Subject: Re: How to split a C string by a string?
> On Wed, 17 Sep 2008 06:32:56 -0700 (PDT), Unga <unga888 at>
> > --- On Wed, 9/17/08, Giorgos Keramidas <keramida at>
> >> From: Giorgos Keramidas <keramida at>
> >> Subject: Re: How to split a C string by a string?
> >> To: unga888 at
> >> Cc: freebsd-questions at
> >> Date: Wednesday, September 17, 2008, 6:17 PM On Wed, 17 Sep 2008 
> >> 00:45:46 -0700 (PDT), Unga <unga888 at> 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: [snip sample code]> 
> > Thank you very much for the reply. That is, there is no existing
> > function. So I got to write to my own :)
> Yes, you have to roll our own.  The standard C library doesn't have 
> string splitting functions with a string as delimiter.  It includes
> strspn() and strcspn(), but these work with character sets as
delimiters, not strings...


the attached code does string splitting and insertion

it looks for a specific string, copies from start up to that 
point to a workspace, inserts the new text, then appends 
the remainder, starting AFTER the search string fragment.

with a bit of work you could make it do your string splitting....

Murray Taylor
Bytecraft Systems
Special Projects Engineer

P: +61 3 8710 0600
D: +61 3 9238 4275
F: +61 3 9238 4140

 |_|0|_|	"Absence of evidence
 |_|_|0|	is not evidence of absence"
 |0|0|0|	Carl Sagan

The information transmitted in this e-mail is for the exclusive
use of the intended addressee and may contain confidential
and/or privileged material. Any review, re-transmission,
dissemination or other use of it, or the taking of any action
in reliance upon this information by persons and/or entities
other than the intended recipient is prohibited. If you
received this in error, please inform the sender and/or
addressee immediately and delete the material. 

E-mails may not be secure, may contain computer viruses and
may be corrupted in transmission. Please carefully check this
e-mail (and any attachment) accordingly. No warranties are
given and no liability is accepted for any loss or damage
caused by such matters.

### This e-mail message has been scanned for Viruses by Bytecraft ###
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.c
Type: application/octet-stream
Size: 2418 bytes
Desc: test.c
Url :

More information about the freebsd-questions mailing list