Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wirkliche ende einer Datei finden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.06.2006, 12:34 Uhr
RedEagle



Hi
Der folgende code liest solange zeichen ein, bis das zeichen 0xFF (= -1 = EOF) kommt.

C++:
   do
   {
    zeichen = fgetc(imgfile);
    bytecounter++;
   }
   while(zeichen != EOF);


Wie kann ich bis zum wirklichen Ende einer Datei lesen, so wie es z.B. ein Hexeditor macht??

z.B. fologender Inhalt:

Code:
0x00 0x41 0x42 0xFF
0x00 0x43 0x44 0xFF *ende*

--
MFG RedEagle

Dieser Post wurde am 01.06.2006 um 12:34 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.06.2006, 13:26 Uhr
ao

(Operator)



C++:
while (!feof (imgfile))
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.06.2006, 13:40 Uhr
RedEagle




--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.06.2006, 15:44 Uhr
Th



fgetc unterscheidet schon zwischen 0xff und EOF, da diese Funktion ein int zurückgibt, d.h. du mußt

C++:
int zeichen = fgetc(fp);


schreiben.
Ich nehme an, du hast zeichen als [unsigned] char definiert gehabt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.06.2006, 09:57 Uhr
RedEagle



So, ich habe das Programm jetzt eigentlich funktionsfähig.
Es arbeitet eigentlich ganz gut, allerdings gibt es bei einer Imagedatei Probleme, das ende zu erreichen. feof() melden bei der offsetadresse 0x1000 das die Datei zuende ist. (Bei meinen Testdateien funktioniert es !?)

woran kann liegen??


Auszug aus der img-datei:
Offset
0x0FF0     20 07 20 07 20 07 20 07 20 07 20 07 20 07 20 07
0x1000     20 07 20 0C 20 0C 20 0C 20 0C 20 0C 20 0C 20 0C

--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.06.2006, 10:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


was willst du den machen ? einlesen kannste evtl speicherintensiver aber performanter.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.06.2006, 11:47 Uhr
RedEagle



Ich möchte ein Programm schreiben, mit dem man Daten quasi Kompilieren kann.

bsp.:

source.txt:
0xFF "ABC" 0x00 0xFF "CDE" 0x00 15d 11001100b


destination.img:
FF 41 42 43 00 FF 44 45 46 00 0F CC


Wenn ich jetzt diesen code in den 100sten Sektor schreiben möchte, aber in der ImageDatei nur 19 Sektoren sind, müssen vorher noch 80 Sektoren mit 0x00 gefüllt werden.

Dazu möchte ich die imagedatei einlesen (bis zum ende). Dadurch weiß ich dann wieviele Bytes (und damit auch Sektoren) vorhanden sind. Die Fehlenden Sektoren bis zum Zielsector werden dann mit 0x00 gefüllt/erstellt, und dann mit dem Binärcode füllen.

Das funktioniert eigentlich auch, nur bei dieser einen Datei nicht.

Wo liegt der Fehler (oder könnte er liegen)??
--
MFG RedEagle

Dieser Post wurde am 03.06.2006 um 11:48 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.06.2006, 12:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja einfach ein fseek(file, 0, SEEK_END) und du bist am ende der datei. mit ftell(file) kannste dir dann die aktuelle position (damit die länge) ausgeben lassen. weiterhin kannste dann an der stelle direkt "weiterschreiben".
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
03.06.2006, 12:30 Uhr
RedEagle



fseek war das Fehlende glied
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: