Ik ben net begonnen met C++ te leren, en bij wijze van oefening voor mezelf wilde ik een string tokenizer bouwen net als in java. Het gaat niet echt om de functionaliteit van de code, maar gewoon dat ik weet wat ik aan 't doen ben. Maar nu is het zo dat op een of andere vage manier aan een dubbele pointer naar een char (char**) aan de char* pointer adres 0x00000001h word toegewezen. Dit vind windows niet zo vriendelijk en laat dan ook behoorlijk hard m'n progje crashen.
Voor de duidelijkheid, de code is vrij brak, en kijk vooral niet naar de functionaliteit van het geheel.
Voor de duidelijkheid, de code is vrij brak, en kijk vooral niet naar de functionaliteit van het geheel.
C++:
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
| #include <iostream.h> #define LENGTH 64 bool tokenize(char string[], int& length, char delim, bool returnDelim, char ** token); int main() { int exit = 1, length = LENGTH; char input [LENGTH]; char ** token; while (exit != 0) { cout << "Typ iets in om te tokenizen\n"; cin.getline(input, LENGTH); tokenize(input, length, ' ', false, token); cout << token[0]; //hier geeft ie dus adres 0x00000001h } return 0; } bool tokenize(char string[], int& length, char delim, bool returnDelim, char ** token) { cout << string; int noDelim = 0; for(int i = 0; i < length; i++) { if (string[i] == delim) noDelim++; } token = new char * [noDelim + 1]; token[0] = &string; length = noDelim + 1; noDelim = 1; for(int i = 0; i < length; i++) { if (string[i] == delim) { string[i] = '\0'; token[noDelim] = &string[i + 1]; noDelim++; } } return true; } |
[ Voor 27% gewijzigd door curry684 op 03-08-2003 02:01 . Reden: layout en zo fix0red :P ]