Deklaracja

edytuj
size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream);


Plik nagłówkowy

edytuj
stdio.h


Argumenty

edytuj
  • ptr : adres danych , które mają być zapisane. Np. wskaźnik do pierwszego obiektu w tablicy, który ma zostać zapisany
  • size : rozmiar elementu tablicy
  • nitems : liczba elementów do zapisu
  • stream : plik, na którym wykonywana jest operacja

Deklaracja

 void *ptr

informuje że argument nie ma z góry określonego typu. Jest to uniwersalny typ wskaźnikowy

Funkcja fwrite kopiuje nitems elementów z podanej tablicy do pliku. Kopiowanie kończy się w przypadku wystąpienia błędu lub po skopiowaniu podanej liczby elementów. Wskaźnik pliku jest przesuwany, tak by wskazywał pierwszy element po ostatnim zapisanym.


Wartość zwracana

edytuj
Liczba faktycznie zapisanych elementów.

Przykład

edytuj



 FILE * fp = fopen("worley.pnm","wb");
 unsigned char b = 200;
 fwrite(&b,1,1,fp);

lub

 FILE * fp = fopen("worley.pnm","wb");
 unsigned char b[1];
 b[0] = 200;
 fwrite(b,1,1,fp);
//https://en.cppreference.com/w/c/io/fwrite
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
enum { SIZE = 5 };
int main(void)
{
    double a[SIZE] = {1, 2, 3, 4, 5};
    FILE *f1 = fopen("file.bin", "wb");
    assert(f1);
    size_t r1 = fwrite(a, sizeof a[0], SIZE, f1);
    printf("wrote %zu elements out of %d requested\n", r1,  SIZE);
    fclose(f1);
 
    double b[SIZE];
    FILE *f2 = fopen("file.bin", "rb");
    size_t r2 = fread(b, sizeof b[0], SIZE, f2);
    fclose(f2);
    printf("read back: ");
    for(size_t i = 0; i < r2; i++)
        printf("%f ", b[i]);
}

Zobacz też

edytuj
Alfabetyczny spis funkcji biblioteki standardowej ANSI C (tzw. libc) w wersji C89.
fscanf (czytanie pojedynczych zmiennych)
fread (analogiczna operacja do czytania z pliku)
fopen (otwarcie pliku)
fclose (zamknięcie pliku)