code:
Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
Terms of Agreement:
By using this code, you agree to the following terms...
1) You may use this code in your own programs (and may compile it into a program and distribute it in compiled format for langauges that allow it) freely and with no charge.
2) You MAY NOT redistribute this code (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.
3) You may link to this code from another website, but ONLY if it is not wrapped in a frame.
4) You will abide by any additional copyright restrictions which the author may have placed in the code or code's description.
//
/* +++Date last modified: 05-Jul-1997 */
#include
#include
#include "snip_str.h"
#if defined(__cplusplus) && __cplusplus
extern "C" {
#endif
char *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
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 */
Other 156 submission(s) by this author