How to split a C string by a string?

Murray Taylor MTaylor at bytecraft.com.au
Thu Sep 18 07:20:44 UTC 2008


> -----Original Message-----
> From: owner-freebsd-questions at freebsd.org
[mailto:owner-freebsd-questions at freebsd.org] On Behalf Of Giorgos
Keramidas
> Sent: Thursday, 18 September 2008 1:49 AM
> To: unga888 at yahoo.com
> Cc: freebsd-questions at freebsd.org
> Subject: Re: How to split a C string by a string?
> 
> On Wed, 17 Sep 2008 06:32:56 -0700 (PDT), Unga <unga888 at yahoo.com>
wrote:
> > --- On Wed, 9/17/08, Giorgos Keramidas <keramida at ceid.upatras.gr>
wrote:
> >> From: Giorgos Keramidas <keramida at ceid.upatras.gr>
> >> Subject: Re: How to split a C string by a string?
> >> To: unga888 at yahoo.com
> >> Cc: freebsd-questions at freebsd.org
> >> Date: Wednesday, September 17, 2008, 6:17 PM On Wed, 17 Sep 2008 
> >> 00:45:46 -0700 (PDT), Unga <unga888 at 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: [snip sample code]> 
>
> > Thank you very much for the reply. That is, there is no existing
split 
> > 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
strtok(), 
> strspn() and strcspn(), but these work with character sets as
delimiters, not strings...

Hi,

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 : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20080918/33a885f4/test.obj


More information about the freebsd-questions mailing list