Re: useful string utility
 
> From:  Erick Gallesio <eg_at_kaolin.unice.fr>
> To:  andrewd_at_eng.uts.edu.au
> Date:  Fri, 19 Sep 1997 22:23:16 +0200
> cc:  stk_at_kaolin.unice.fr
> Subject:  Re: useful string utility 
> That's general purpose enough to be in the core release and I have
> already  integrated it in my source tree. However I have implemented
> it without strtok, because strtok patches the original string  by
> placing null characters into it.
It also has the annoying property that it is not reentrant; this
doesn't work in a reasonable way; this would be really bad for STk
for, e.g. parsing a string to evaluate which then parses another
string. 
#include <stdio.h>
#include <string.h>
char a[40];
void tokenize(char *s, void (*action)(char *))
{
  char *tok;
  tok= strtok(s," ");
  while (tok)
    {
      (*action)(tok);
      tok=strtok(NULL," ");
    }
}
void action0(char *s)
{
  printf("%s**",s);
}
void action1(char *s)
{
  char *tok;
  tok= strtok(s,"x");
  while (tok)
    {
      tok=strtok(NULL," ");
      printf("%s**",tok);
    }
}
void action2(char *s)
{
  char *tok;
  tok= strtok(s,"x");
  printf("%s**",tok);
}
main()
{
  printf("action0:\n");
  strcpy(a,"axbxc 1x2x3 fxoxo bxaxr");
  tokenize(a, action0);
  printf("\n");
  printf("action1:\n");
  strcpy(a,"axbxc 1x2x3 fxoxo bxaxr");
  tokenize(a, action1);
  printf("\n");
  printf("action2:\n");
  strcpy(a,"axbxc 1x2x3 fxoxo bxaxr");
  tokenize(a, action2);
  printf("\n");
}
                        strtok considered harmful
                                        - M
-=-=-=-=-=-=-=-=-=-=-=+=-=-=-=-=-=-=-=-=-=-=-=+=-=-=-=-=-=-=-=-=-=-=-=-
Mark "Monty" Montague | monty_at_gg.caltech.edu  | I don't do Windows(tm)
-=-=-=-=-=-=-=-=-=-=-=+=-=-=-=-=-=-=-=-=-=-=-=+=-=-=-=-=-=-=-=-=-=-=-=-
DON'T PANIC! I'm a trained professional, and far more | *Why* question
  qualified to panic in this situation than you are.  |   authority?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Received on Sat Sep 20 1997 - 02:43:49 CEST
This archive was generated by hypermail 2.3.0
: Mon Jul 21 2014 - 19:38:59 CEST