# ANSI C: Datei byteweise auslesen?



## Tensi (4. Mai 2003)

Hallo!

Ich bin absoluter C Anfänger und möchte eine Textdatei
byteweise also Zeichenweise auslesen und den Inhalt
in eine weitere Datei kopieren, ohne das Steuer/Sonderzeichen
verloren gehen. Dabei möchte ich die Position im Text angeben können, welches Zeichen gelesen werden soll. Ich habe das schon mit fseek ausprobiert, bin aber nicht weitergekommen.
Ich bitte um Hilfe!!!

Vielen Dank schon jetzt für eure Antworten ...


----------



## Daniel Toplak (4. Mai 2003)

Also grundsätzlich gehst du da so vor:

Datei zum Lesen öffnen mit fopen()
konnte die Datei geöffnet werden?
mit fseek() an die Stelle springen ab der du lesen willst, wenn du nicht von Anfang an lesen willst
die zeichen einlesen, entweder mit fgetc() zeichenweise, oder mit fgets() mehrere zeichen
Datei schließen mit fclose()

2.Datei zu schreiben öffnen
konnte die Datei geöffnet werden?
mit fputc() ein Zeichen oder mit fputs() mehrer Zeichen rein schreiben
Datei schließen mit fclose()

Gruss Homer


----------



## bitmaster (4. Mai 2003)

Du musst aber folgendes beachten:
fgetc gibt einen int Wert zurück!
Hier ist der Code:


...
char byte = char(fgetc(file));
...


----------



## Daniel Toplak (4. Mai 2003)

Ähm ja klar ist natürlich noch ein cast auf char nötig.

Gruss Homer


----------



## Tensi (8. Mai 2003)

*fseek ???*

Hallo!

Zuerst möchte ich mich für eure Mühen bedanken!!!
Hat mir viel geholfen ...

Aber ich stolpere immer wieder über fseek! 
Ich werde auch aus der MSDN Beschreibung und
verschiedenen Büchern nicht schlau.
Kann mir jemand die Syntax schreiben, wenn ich
z. B. das 17. Byte von "datei" (Pointer "datei" auf File)
in die Variable C (char) speichern möchte??? 
(Ohne fopen und das ganze drumrum ...)

Vielen, vielen Dank schon jetzt für Eure Hilfe!!!!


----------



## Frankdfe (9. Mai 2003)

Hallo!

fseek(datei, 16, SEEK_SET);

C = char(fgetc(datei));

SEEK_SET bedeutet, das du vom Dateianfang aus 16 Bytes weiterspringst.

Statt y=char(x) kannst du auch y = (char) x schreiben(Gefällt mir besser).

Gruß Frank


----------



## Mr.Undertaker (9. Mai 2003)

Die Schreibweise 
_y = (char) x _ ist die von C und 

_y = char (x)_, die von C++ !!

Wenn du also reines C programmieren musst, musst du die obere Schreibweise nehmen ansonsten störts nich allzu sehr .


----------



## Tensi (10. Mai 2003)

Perfekt ...

Vielen Dank euch allen für 
die große Hilfe!!!


----------

