Mein Programm ließt nur die ersten 25. meiner Datei korrekt ein
-
Hallo!
Die meisten Dateien ließt mein Programm korrekt aus. Aber bei einer bekomme ich aber immer nur die ersten 25 Zeichen korrekt ausgelesen. Alle folgenden sind immer Null. Woran leigt das?
Problem-Datei:
00000000h: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; ................ 00000010h: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ; ................ 00000020h: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F ; !"#$%&'()*+,-./ 00000030h: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F ; 0123456789:;<=>? 00000040h: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F ; @ABCDEFGHIJKLMNO 00000050h: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F ; PQRSTUVWXYZ[]^_ 00000060h: 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F ; `abcdefghijklmno 00000070h: 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F ; pqrstuvwxyz{|}~ 00000080h: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F ; €‚ƒ„…†‡ˆ‰Š‹ŒŽ 00000090h: 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F ; ‘’“”•–—˜™š›œžŸ 000000a0h: A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF ; ¡¢£¤¥¦§¨©ª«¬®¯ 000000b0h: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF ; °±²³´µ¶·¸¹º»¼½¾¿ 000000c0h: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF ; ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ 000000d0h: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF ; ÐÑÒÓÔÕÖרÙÚÛÜÝÞß 000000e0h: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF ; àáâãäåæçèéêëìíîï 000000f0h: F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF ; ðñòóôõö÷øùúûüýþÿ 00000100h: 00 00 00 00 00 00 00 00 00 00 06 05 05 05 05 05 ; ................ 00000110h: 07 ; .
Mit dieser Datei hingegen klappt es ohne Probleme:
00000000h: 30 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 ; 0123456789abcdef 00000010h: 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 ; ghijklmnopqrstuv 00000020h: 77 78 79 7A 41 42 43 44 45 46 47 48 49 4A 4B 4C ; wxyzABCDEFGHIJKL 00000030h: 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A ; MNOPQRSTUVWXYZ
Quellcode:
FDatei.open(SQuelleDateiname, ios::in); if (FDatei.is_open() == 0) { konsole("Fehler: Konnte Quelledatei nicht öffnen.\n"); system("PAUSE"); exit(0); } else { FDatei.seekg(0, ios::end); ILaengeQuelle = FDatei.tellg(); AQuelle = new unsigned char[ILaengeQuelle]; AZiel = new unsigned char[ILaengeQuelle]; FDatei.seekg(0, ios::beg); FDatei.read((char*)AQuelle, ILaengeQuelle); for (unsigned long i=0; i<ILaengeQuelle; ++i) { cout << i << " " << (int)AQuelle[i] << endl; } } FDatei.close();
Viele Grüße
pmw
-
Hi,
ich habe deinen Quelltext nur mal eben überflogen, und festgestellt das du Binär daten im Text-Modus einlesen willst das macht der natürlich nicht mit daher würde ich sagen du öffnest den File-Stream so:
FDatei.open(SQuelleDateiname, ios::in | ios::binary );
dann müsste es klappen.
Könnte auch nen anderen grund haben sollte es nicht funktionieren melde dich dann befasse ich mich noch mal damit.
MfG
-
Danke! Das war die Lösung.