Przejdź do zawartości

C/fwrite

Z Wikibooks, biblioteki wolnych podręczników.
< C

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

ptr

[edytuj]

Deklaracja

 void *ptr

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

Opis

[edytuj]
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)