Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
31.10.2001, 14:40
tobsn



also ich hoffe ihr könnt mir da helfen

Also:

ich muss ein file einlesen, hat bis jetzt auch funktioniert nur hab ich jetzt das ganze in eine while schleife gepackt und der gesagt sie soll die bytes lesen (fgetc()) bis das file zu ende is (also EOF, bzw -1) ich hab also eine while schleife geschrieben (while(z != EOF)) und das funktioniert auch bis zum erstem mal HEX FF in einem Byte steht dann bricht die schleife ab, also wird FF anscheinend als EOF interpretiert. is das normal? in Java geht es es, in c++ nicht, wieso? weis das einer von euch?

danke

--

zum Seitenanfang zum Seitenende Profil || Suche
001
31.10.2001, 15:37
Hellfire



Probier mal while (!feof(filepointer)) aus.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
31.10.2001, 17:45
Tron



wenn 0xff als signed byte interpretiert wird, ist es -1

btw: ist nicht zeichen nummer 26 (0x1a) EOF?

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
003
31.10.2001, 22:32
tobsn



(!feof(Filepointer))
hab ich ausprobiert da werden zuwwar mehr aber trozdem nciht alles bytes gelesen!
nach ca 256 bytes ist es immer aus

--

zum Seitenanfang zum Seitenende Profil || Suche
004
01.11.2001, 15:34
tobsn



ja 0x1a is EOF das und weil in dem file dasich da hab andauernd 1a vorkommt kann ichs nciht richtig öffnen kann man das irgendwie umgehn??

--

zum Seitenanfang zum Seitenende Profil || Suche
005
01.11.2001, 17:17
Another1



wenn es ein binary file is, ganz wichtig:
als "rb" öffnen

versuch mal dann nochmal

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
006
01.11.2001, 17:25
tobsn



danke, jetzt gehts!
was bewirkt rb?

--

zum Seitenanfang zum Seitenende Profil || Suche
007
03.11.2001, 00:52
Prefect



Das b bewirkt, daß selbst DOS die Datei als Binärdatei anerkennt. Unter anderem werden z.B. CR/LFs (\r\n) beim Lesen nicht in LFs (\n) umgewandelt. Im normalen (=t) Modus findet diese Umwandlung statt, da DOS hirnverbrannterweise Zeilenumbrüche in Textdateien als \r\n darstellt, während Unix und C-Programme dies mit \n tun.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
008
03.11.2001, 01:37
Kriz



Das ist mir aber neu, Prefi, daß Unix \n verwendet. Soweit ich das Lineend-Chaos kenne, läuft es so ab:

Win/DOS: CR/LF
Unix: CR
Mac: LF

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
009
03.11.2001, 16:41
Tron



@Kriz:
soweit ich weiss verwenden sowohl mac als auch unix LF (0xa0)

@Prefect:
wieso hirnverbrannt? wenn man es von den urspruenglichen bedeutungen von CR und LF betrachtet (also fernschreiber und drucker) ist es korrekt:
CR (carrige return = wagen ruecklauf) bewirkt das zurueckfahren an den zeilenanfang ohne wechseln der zeile
LF (line feed = zeilen vorschub) springt eine zeile weiter, bleibt aber an der selben horizontalen position
(also muesste auch LF CR und nicht nur CR LF funktionieren, hab' ich aber noch nie ausprobiert)

andererseits ist es reine definitionssache was man als markierung fuer einen zeilenwechsel ansieht...

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
010
03.11.2001, 16:45
Mazze



Jaja......bei machen ist alles was MS macht hirnverbrannt....

[edit]
Soviel ich weiß
Unix: \n
Mac: \r
Win: \r\n

--

BattleTech-MOD:
http://bthl.unitedgaming.net/


Dieser Beitrag wurde am 03.11.2001 um 16:52 von Mazze bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
05.11.2001, 18:31
Prefect



Also, Unix verwendet _natürlich_ \n, immerhin verwendet C \n und C wurde für Unix entwickelt. Da hätte jemand sehr dumm sein müssen, um es anders zu machen.

Ich hab auch gerüchteweise gehört, daß Macs \r verwenden, also scheint die Info im obigen Post korrekt zu sein.

Ich denke es ist generell hirnverbrannt, eine einzelne Einheit (also Zeilenwechsel) in Textdateien mit zwei Zeichen darzustellen. Natürlich stimmt das mit Carriage Return und Line Feed. Aber nenn mir bitte eine einzige Situation, in der ich in einer normalen Textdatei ein Carriage Return ohne Line Feed bzw. umgekehrt benötige...

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
012
05.11.2001, 20:14
Kriz



Na ja =) Darüber läßt sich zanken: Zuerst Linefeed und dann Wagenrücklauf oder andersrum. Ist halt alles noch aus Nadeldruckers Zeiten... Obwohl sinnigerweise die erste Kombination am Denkbarsten ist (Stichwort Bidirektionaldruck).

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche