fwrite()

fwrite() ist in der stdio definiert, die in C über stdio.h, bzw in C++ über cstdio eingebunden wird.

Funktion

fwrite() schreibt ein Datenarray mit einer gegebenen Anzahl von Elementen von einer gegebenen Größe aus dem Speicher an die aktuelle Position im angegebenen Stream.
Anschließend wird die Schreibposition des Streams um die totale Anzahl geschriebener Bytes weitergerückt.

Signatur

#include <stdio.h>
size_t fwrite (const void * ptr, size_t size, size_t count, FILE * stream );

ptr: Zeiger auf den Speicherbereich, aus dem kopiert werden soll.
size: Die Größe in Bytes eines einzelnen Blocks.
count: Anzahl der Blöcke, die geschrieben werden.
stream: Zeiger auf den Stream, in den geschrieben wird.

Return Value: Die Anzahl der erfolgreich geschriebenen Blöcke.

Fehlerquellen

Es kann passieren, dass nicht alle Elemente geschrieben werden können, weil z.B. kein freier Speicher mehr vorhanden ist. Deswegen sollte der Rückgabewert darauf überprüft werden, ob er der Anzahl zu schreibender Elemente (count) entspricht. Ist der Rückgabewert ein anderer, deutet dies auf einen Fehler hin.

Beispiel

#include <stdio.h>
#include <stdlib.h>
 
struct data {
  int nummer;
  int daten;
};
 
int main (void)
{
  FILE *datei = fopen ("meinedatei.bin","wb");
  struct data Daten[3];
  unsigned short i = 0;
  unsigned int ret = 0;
  for (; i < 3; i++) 
  {
    Daten[i].nummer = i;
    Daten[i].daten = i*i;
  }
  ret = fwrite (Daten,sizeof(struct data),3,datei);
 
  if (ret != 3) 
    printf ("Hupps, ein Fehler...\n");
  else 
    printf ("Erfolgreich geschrieben!\n");
 
  fclose (datei);
  return EXIT_SUCCESS;
}

Siehe auch