Geschrieben von edvo am 25.06.2004, 12:25

Formatiertes Lesen und Schreiben

Mit den folgenden Funktionen lassen sich formatierte Texte in Streams schreiben und aus
Streams lesen:
int fprintf(FILE *fp, const char *format [, argument ]... );
Arbeitet wie printf(), schreibt die Daten aber formatiert in den Stream fp. Liefert die
Anzahl der tatsächlich geschriebenen Zeichen, im Fehlerfall EOF (-1).
int fscanf(FILE *fp, const char *format [, argument ]... );
Arbeitet wie scanf(), liest die Daten aber formatiert aus dem Stream fp. Rückgabewert
ist die Anzahl der erfolgreich gelesenen Felder bzw. EOF bei einem Fehler.

Lesen und Schreiben von Binärdaten
Die folgenden Funktionen dienen zum Schreiben und Lesen von Binärdaten.
size_t fread( void *buf, size_t size, size_t count, FILE *fp);
Versucht aus dem Stream fp count viele Einheiten der Größe size zu lesen und ab der
Adresse buf im Speicher abzulegen. Rückgabewert ist die Anzahl der erfolgreich
gelesenen Einheiten, bei Erfolg also count, im Fehlerfall ein Wert kleiner als count.
size_t fwrite(const void *buf, size_t size, size_t count,
FILE *fp);
Liest aus dem Speicher ab der Adresse buf count viele Einheiten der Größe size und
schreibt diese Daten in den Stream fp.Rückgabebewert ist die Anzahl der erfolgreich
geschriebenen Einheiten, bei Erfolg also count, im Fehlerfall ein Wert kleiner als count.
Die folgenden Aufrufe von fwrite() schreiben jedesmal ein Integerfeld der Größe 100 in
den Stream fp. Die Aufrufe unterscheiden sich durch die Größe der logisch
geschriebenen Einheiten und damit durch die möglichen Rückgabewerte.
fwrite(feld, sizeof(int), 100, fp); // RW 0-100
fwrite(feld, 100*sizeof(int), 1, fp); // RW 0,1
Das nächste Beispiel zeigt wieder ein Dateikopierprogramm, wobei die Datei aber nun in
Blöcken zu 1024 Byte übertragen wird.
001 #include<stdio.h>
002
003 int main(int argc, char *argv[]) {
004 FILE *in = NULL, *out = NULL;
005 unsigned char buf[1024];
006 int bytesRead;
007
008 if(argc != 3) {
009 fprintf(stderr, "Falscher Aufruf\n");

Bewertung Anzahl
5
100,0 %
1 Bewertungen