stptok.c

来自「国外网站上的一些精典的C程序」· C语言 代码 · 共 81 行

C
81
字号
/***  stptok() -- public domain by Ray Gardner, modified by Bob Stout****   You pass this function a string to parse, a buffer to receive the**   "token" that gets scanned, the length of the buffer, and a string of**   "break" characters that stop the scan.  It will copy the string into**   the buffer up to any of the break characters, or until the buffer is**   full, and will always leave the buffer null-terminated.  It will**   return a pointer to the first non-breaking character after the one**   that stopped the scan.*/#include <string.h>#include <stdlib.h>#include "snip_str.h"#if defined(__cplusplus) && __cplusplus extern "C" {#endifchar *stptok(const char *s, char *tok, size_t toklen, char *brk){      char *lim, *b;      if (!*s)            return NULL;      lim = tok + toklen - 1;      while ( *s && tok < lim )      {            for ( b = brk; *b; b++ )            {                  if ( *s == *b )                  {                        *tok = 0;                        for (++s, b = brk; *s && *b; ++b)                        {                              if (*s == *b)                              {                                    ++s;                                    b = brk;                              }                        }                        return (char *)s;                  }            }            *tok++ = *s++;      }      *tok = 0;      return (char *)s;}#if defined(__cplusplus) && __cplusplus }#endif#ifdef TEST#include <stdio.h>main(int argc, char *argv[]){      char *ptr, buf[256];      if (3 > argc)      {            puts("Usage: STPTOK \"string\" \"token_string\"");            return EXIT_FAILURE;      }      else  ptr = argv[1];      do      {            ptr = stptok(ptr, buf, sizeof(buf), argv[2]);            printf("stptok(\"%s\", \"%s\")\n  buf: \"%s\"\n  "                  "returned: \"%s\"\n", argv[1], argv[2], buf, ptr);      } while (ptr && *ptr);      return EXIT_SUCCESS;}#endif /* TEST */

⌨️ 快捷键说明

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