Bij het uitvoeren van 'code part 2' in de main() functie loopt het programma vast na het pause commando. Als je dat stukje code comment, en dus enkel 'code part 1' start dan krijg je geen error.
Anders gezegd:
Als de functie StringToReversedBin() een string meekrijgt die groter is dan 8 byte, dan krijgt het programma problemen.
Weet er iemand een oplossing?
[edit] Mijn excuses, ik ben [c++] in het topic vergeten vermelden *schaam*
Anders gezegd:
Als de functie StringToReversedBin() een string meekrijgt die groter is dan 8 byte, dan krijgt het programma problemen.
Weet er iemand een oplossing?
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
51
52
53
54
55
56
57
58
59
| #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <vector.h> char *StringToReversedBin(char *data) { char oneByte[8]=""; double current; int counter; char *resultString; int resultlength = (strlen(data)*8); int bitpos; resultString = new char[resultlength]; // make a new string to store vector in memset(resultString, 0, resultlength); // allocate memory for (int i=0; i<strlen(data); i++) // run through all characters { current = data[i]; // current character value counter = 0; // this value will be used to add zero's at the end do { bitpos = (i*8)+counter; counter++; oneByte[i] = (int)fmod(current,2); // divide by 2 and find rest if (oneByte[i]==0) resultString[bitpos] = '0'; // add bit to vector else resultString[bitpos] = '1'; // add bit to vector current = (current-oneByte[i])/2; } while (current>0); // loop until division results 0 for (int j=0; j<(8-counter); j++) // add zero's at end resultString[bitpos+j+1] = '0'; } free(oneByte); printf("Return value function, befor return:\n%s\n", resultString); return resultString; } int main() { //<-- code part 1 char *data = "12345678"; data = StringToReversedBin(data); printf("Returned value:\n%s\n\n", data); //--> end code part 1 //<-- code part 2 data = "123456789"; data = StringToReversedBin(data); printf("Returned value:\n%s\n\n", data); //--> end code part 2 system("PAUSE"); free(data); return 0; } |
[edit] Mijn excuses, ik ben [c++] in het topic vergeten vermelden *schaam*
[ Voor 20% gewijzigd door Verwijderd op 20-03-2003 19:46 ]