strtok.c

来自「广泛使用的邮件服务器!同时」· C语言 代码 · 共 68 行

C
68
字号
/* ======================================================================== * Copyright 1988-2007 University of Washington * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * *  * ======================================================================== *//* * Program:	String return successive tokens * * Author:	Mark Crispin *		Networks and Distributed Computing *		Computing & Communications *		University of Washington *		Administration Building, AG-44 *		Seattle, WA  98195 * * Date:	11 May 1989 * Last Edited:	30 January 2007 *//* Find token in string * Accepts: source pointer or NIL to use previous source *	    vector of token delimiters pointer * Returns: pointer to next token */static char *state = NIL;	/* string to locate tokens */char *strtok (char *s,char *ct){  return strtok_r (s,ct,&state);/* jacket into reentrant routine */}/* Find token in string (reentrant) * Accepts: source pointer or NIL to use previous source *	    vector of token delimiters pointer *	    returned state pointer * Returns: pointer to next token */char *strtok_r (char *s,char *ct,char **r){     char *t,*ts;  if (!s) s = *r;		/* use previous token if none specified */  *r = NIL;			/* default to no returned state */  if (!(s && *s)) return NIL;	/* no tokens left */				/* find any leading delimiters */  do for (t = ct, ts = NIL; *t; t++) if (*t == *s) {    if (*(ts = ++s)) break;	/* yes, restart search if more in string */    return NIL;			/* else no more tokens */  } while (ts);			/* continue until no more leading delimiters */				/* can we find a new delimiter? */  for (ts = s; *ts; ts++) for (t = ct; *t; t++) if (*t == *ts) {    *ts++ = '\0';		/* yes, tie off token at that point */    *r = ts;			/* save subsequent tokens for future call */    return s;			/* return our token */  }  return s;			/* return final token */}

⌨️ 快捷键说明

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