Ik ben bezig een tooltje te schrijfen dat: een bestand inleest. De buffer naar een string kopieert en weer naar een nieuwe buffer. Nu werkt het onderstaande stukje code prima van txt naar txt toe. Zonder de 2e buffer werkt het ook van .exe naar .exe toe. Maar het werkt niet als je van .exe naar .txt gaat. Alleen ik snap niet waarom. Ik krijg geen errors qua bufferoverflow o.i.d. en de test.txt outputfile blijft geheel leeg. Wat zie ik over het hoofd?
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
| #include <iostream> #include <fstream> #include <iomanip> #include<string.h> using namespace std; int main () { char * buffer; char * buffer2; long size; ifstream infile ("test.exe",ifstream::binary); ofstream outfile ("new.txt",ofstream::binary); // get size of file infile.seekg(0,ifstream::end); size=infile.tellg(); infile.seekg(0); // allocate memory for file content buffer = new char [size]; // read content of infile infile.read (buffer,size); string str = buffer; buffer2 = new char[str.length() + 1]; strcpy(buffer2, str.c_str()); //buffer2 = str.GetBuffer(); cout << str; system("pause" ); // write to outfile outfile.write (buffer2,size); // release dynamically-allocated memory delete[] buffer; outfile.close(); infile.close(); } |
[ Voor 0% gewijzigd door RobIII op 03-03-2010 22:45 . Reden: Syntax highlighting FTW \0/ ]