strtok.c

来自「spice中支持多层次元件模型仿真的可单独运行的插件源码」· C语言 代码 · 共 100 行

C
100
字号
/* $Header: /home/harrison/c/tcgmsg/ipcv4.0/RCS/strtok.c,v 1.1 91/12/06 17:27:38 harrison Exp Locker: harrison $ *//*  Primitive version of strtok for alliant etc who don't have it.  I think it works .... ?*/#undef NULL#define NULL 0static int InSet(a, set)     char *a, *set;/*  Return 1 if in set         0 otherwise*/{  register char test;  register b = (*a);  while ( test = *set++ )    if (test == b)      return 1;  return 0;}static char *NextNotInSet(string, set)     char *string, *set;/*  Return pointer to next character in string not in set or  return NULL pointer if no such character*/{  if (string == (char *) NULL)    /* Return NULL if given NULL */    return (char *) NULL;  while (*string) {    if (InSet(string, set))      string++;    else      break;  }  if (*string)    return string;  else    return (char *) NULL;}static char *NextInSet(string, set)     char *string, *set;/*  Return pointer to next character in string in set or  return NULL pointer if no such character*/{  if (string == (char *) NULL)    /* Return NULL if given NULL */    return (char *) NULL;  while (*string) {    if (InSet(string, set))      break;    else      string++;  }  if (*string)    return string;  else    return (char *) NULL;  }char *strtok(s1, s2)     char *s1, *s2;/*  Naive version of strtok for the alliant*/{  static char *string = (char *) NULL;  char *start, *end;    if (s1 != (char *) NULL)          /* Initialize on first call */    string = s1;    start = NextNotInSet(string, s2); /* Find start of next token */  end = NextInSet(start, s2);       /* Find end of this token */  if (end == (char *) NULL)    string = (char *) NULL;  else {    string = end + 1;    *end = '\0';  }  return start;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?