1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| #include <iostream>
#include <cstring>
using namespace std;
char* HOL_TARTOTT_A_MYSTRTOK = NULL;
char *my_strtok(char* s, char *jelek) {
if (s != NULL)
HOL_TARTOTT_A_MYSTRTOK = s;
char* p = HOL_TARTOTT_A_MYSTRTOK;
if (p == NULL || *p == '\0') {
HOL_TARTOTT_A_MYSTRTOK = NULL;
return NULL;
}
// átugorjuk az elválasztójeleket
while (strchr(jelek, *p) != NULL)
p++;
if (*p == '\0') { // nincs több szó
HOL_TARTOTT_A_MYSTRTOK = NULL;
return NULL;
}
// van még token, q-val elmegyünk a végére
char *q = p+1;
while (*q != '\0' && strchr(jelek, *q) == NULL)
q++;
if (*q == '\0')
HOL_TARTOTT_A_MYSTRTOK = NULL;
else {
HOL_TARTOTT_A_MYSTRTOK = q+1;
*q = '\0';
}
return p;
}
int main()
{
char s[100] = "egy ketto,. harom";
// pont úgy kell működjön, mint a beépített strtok
char* p = my_strtok(s, " ,.");
while (p != NULL) {
cout << p << endl;
p = my_strtok(NULL, " ,.");
}
return 0;
}
|