2009-06-11 16 views

Antwort

1

Öffnen Sie die Datei für binäres Lesen/Schreiben. fopen nimmt einen b Schalter für Parameterdatei Zugriffsmodus - see here

Siehe fopen page in Wikipedia für den Unterschied zwischen Text- und Binärdateien sowie ein Code-Beispiel zum Schreiben von Daten in eine Binärdatei

11

In Standard-C, fopen() erlaubt der Modus "wb" zu schreiben (und "rb" zu lesen) im Binärmodus, also:

#include <stdio.h> 

int main() { 
    /* Create the file */ 
    int x = 1; 
    FILE *fh = fopen ("file.bin", "wb"); 
    if (fh != NULL) { 
     fwrite (&x, sizeof (x), 1, fh); 
     fclose (fh); 
    } 

    /* Read the file back in */ 
    x = 7; 
    fh = fopen ("file.bin", "rb"); 
    if (fh != NULL) { 
     fread (&x, sizeof (x), 1, fh); 
     fclose (fh); 
    } 

    /* Check that it worked */ 
    printf ("Value is: %d\n", x); 

    return 0; 
} 

Diese Ausgänge:

Value is: 1 
+2

dies im Auge behalten (via Mann fopen): Die String-Modus kann auch Fügen Sie den Buchstaben "b" entweder als letztes Zeichen oder als Zeichen zwischen den Zeichen in einem der oben beschriebenen zwei Zeichen umfassenden Zeichenfolgen ein. Dies ist ausschließlich für die Kompatibilität mit C89 und hat keine Auswirkungen; Das 'b' wird ignoriert auf alle POSIX-konformen Systeme, einschließlich Linux. (Andere Systeme können Textdateien und Binärdateien unterschiedlich behandeln, und das Hinzufügen der 'b' kann eine gute Idee sein, wenn Sie I/O zu einer Binärdatei ausführen und erwarten, dass Ihr Programm möglicherweise in Nicht-Unix-Umgebungen portiert wird.) – tr9sh

1

Siehe man für syscalls open, write und read.

3

Aus der Sicht des Betriebssystems sind alle Dateien Binärdateien. C (und C++) stellen einen speziellen "Textmodus" zur Verfügung, der Dinge wie Zeilenumbrüche auf Zeilenumbrüche/Zeilenumbrüche (unter Windows) erweitert, aber das Betriebssystem weiß nichts darüber.

In einem C-Programm eine Datei ohne diese spezielle Behandlung zu erstellen, verwenden Sie die "b" Flagge von fopen():

FILE * f = fopen("somefile", "wb"); 
Verwandte Themen