Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #83840

Re: strtok() implementation

From Ian Collins <ian-news@hotmail.com>
Newsgroups comp.lang.c
Subject Re: strtok() implementation
Date 2016-03-14 15:31 +1300
Message-ID <dkmm42F53ugU2@mid.individual.net> (permalink)
References <56e59164$0$27830$426a74cc@news.free.fr>

Show all headers | View raw


On 03/14/16 05:13, boon wrote:
> Hello,
>
> I am writing strtok() implementation, just for the fun and to improve my
> C coding style and skills.
>
> Here is my solution.

<snip>

Here's an alternative, avoiding any library functions...

#include <stddef.h>
#include <stdbool.h>

static bool
charIn( char c, const char* delim )
{
   while( *delim )
   {
     if( *delim++ == c )
     {
       return true;
     }
   }

   return false;
}

static bool
charNotIn( char c, const char* delim )
{
   while( *delim && *delim != c )
   {
     ++delim;
   }

   return *delim == '\0';
}

char*
my_strtok( char* restrict str, const char* restrict delim )
{
   static char* last = NULL;

   if( !delim ) return NULL;
   if( !str && !last ) return NULL;

   if( !str )
   {
     str = last;
   }
   else
   {
     last = NULL;
   }

   while( *str && charIn( *str, delim) )
   {
     ++str;
   }

   if( *str )
   {
     char* start = str;

     while( *start && charNotIn(*start, delim) )
     {
       ++start;
     }

     if( *start )
     {
       *start++ = NULL;
     }

     last = start;

     return str;
   }

   return NULL;
}

-- 
Ian Collins

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

strtok() implementation boon <root@localhost> - 2016-03-13 17:13 +0100
  Re: strtok() implementation Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-03-13 10:04 -0700
    Re: strtok() implementation boon <root@localhost> - 2016-03-13 18:51 +0100
  Re: strtok() implementation Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-03-13 13:38 -0400
    Re: strtok() implementation boon <root@localhost> - 2016-03-13 19:05 +0100
      Re: strtok() implementation Keith Thompson <kst-u@mib.org> - 2016-03-13 13:50 -0700
        Re: strtok() implementation boon <root@localhost> - 2016-03-13 23:10 +0100
  Re: strtok() implementation boon <root@localhost> - 2016-03-13 21:06 +0100
    Re: strtok() implementation Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-03-13 16:26 -0400
      Re: strtok() implementation boon <root@localhost> - 2016-03-13 22:52 +0100
        Re: strtok() implementation boon <root@localhost> - 2016-03-13 23:25 +0100
          Re: strtok() implementation Ian Collins <ian-news@hotmail.com> - 2016-03-14 15:26 +1300
            Re: strtok() implementation boon <root@localhost.localdomain> - 2016-03-14 12:44 +0100
              Re: strtok() implementation Tim Rentsch <txr@alumni.caltech.edu> - 2016-03-17 08:23 -0700
                Re: strtok() implementation boon <root@localhost> - 2016-03-18 21:09 +0100
                Re: strtok() implementation Tim Rentsch <txr@alumni.caltech.edu> - 2016-03-19 14:21 -0700
                Re: strtok() implementation Randy Howard <rhoward.mx@EverybodyUsesIt.com> - 2016-03-19 16:25 -0500
                Re: strtok() implementation boon <fred900rbc@gmail.com> - 2016-03-24 13:05 -0700
                Re: strtok() implementation Tim Rentsch <txr@alumni.caltech.edu> - 2016-03-30 09:13 -0700
                Re: strtok() implementation Randy Howard <rhoward.mx@EverybodyUsesIt.com> - 2016-03-30 14:44 -0500
                Re: strtok() implementation boon <root@127.10.10.1> - 2016-03-31 10:24 +0200
                Re: strtok() implementation Tim Rentsch <txr@alumni.caltech.edu> - 2016-04-05 12:23 -0700
  Re: strtok() implementation Ian Collins <ian-news@hotmail.com> - 2016-03-14 15:31 +1300
    Re: strtok() implementation boon <root@localhost> - 2016-03-14 20:13 +0100
      Re: strtok() implementation Ian Collins <ian-news@hotmail.com> - 2016-03-15 09:48 +1300
        Re: strtok() implementation Malcolm McLean <malcolm.mclean5@btinternet.com> - 2016-03-14 14:05 -0700
          Re: strtok() implementation Ian Collins <ian-news@hotmail.com> - 2016-03-15 10:09 +1300
            Re: strtok() implementation Richard Heathfield <rjh@cpax.org.uk> - 2016-03-14 22:02 +0000
              Re: strtok() implementation Gareth Owen <gwowen@gmail.com> - 2016-03-14 22:16 +0000
          Re: strtok() implementation Keith Thompson <kst-u@mib.org> - 2016-03-14 14:50 -0700
          Re: strtok() implementation raltbos@xs4all.nl (Richard Bos) - 2016-03-14 22:06 +0000
            Re: strtok() implementation boon <root@localhost> - 2016-03-15 22:14 +0100
              Re: strtok() implementation BartC <bc@freeuk.com> - 2016-03-15 21:23 +0000
              Re: strtok() implementation raltbos@xs4all.nl (Richard Bos) - 2016-03-17 12:27 +0000
        Re: strtok() implementation boon <root@localhost> - 2016-03-15 22:04 +0100
          Re: strtok() implementation Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-03-15 18:18 -0400
            Re: strtok() implementation boon <root@localhost> - 2016-03-18 21:19 +0100
        Re: strtok() implementation boon <root@localhost> - 2016-03-15 22:08 +0100
  Re: strtok() implementation boon <root@localhost> - 2016-03-15 22:32 +0100

csiph-web