📄 stptok.c
字号:
/*** 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -