1 #include <string.h> 2 3 #define N 256 4 5 char* 6 strtok(char *s, const char *b) 7 { 8 static char *under_rock; 9 char map[N], *os; 10 11 memset(map, 0, N); 12 while(*b) 13 map[*(unsigned char*)b++] = 1; 14 if(s == 0) 15 s = under_rock; 16 while(map[*(unsigned char*)s++]) 17 ; 18 if(*--s == 0) 19 return 0; 20 os = s; 21 while(map[*(unsigned char*)s] == 0) 22 if(*s++ == 0) { 23 under_rock = s-1; 24 return os; 25 } 26 *s++ = 0; 27 under_rock = s; 28 return os; 29 } 30