Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Pomógł: GoldWolf
Język C++

fwrite

[funkcja] Zapisuje określoną ilość danych do wskazanego strumienia.

Składnia

C/C++
#include <cstdio>

size_t fwrite( const void * buffer, size_t size, size_t count, FILE * stream );

Argumenty

ArgumentOpis
void *bufferBufor z danymi, który ma zostać zapisany do wskazanego strumienia.
size_t sizeRozmiar jednego elementu danych, wyrażony w bajtach.
size_t countLiczba elementów, która ma zostać zapisana do wskazanego strumienia.
FILE *streamOkreśla strumień na którym ma zostać wykonana operacja.

Zwracana wartość

Zwraca liczbę poprawnie zapisanych elementów. Zwrócona wartość może być mniejsza niż wartość count jeżeli w trakcie zapisywania danych wystąpił błąd. W celu ustalenia rodzaju błędu jaki wystąpił podczas zapisywania danych należy użyć funkcji » standard Cferror.

Opis szczegółowy

Funkcja zapisuje do strumienia count elementów, gdzie rozmiar każdego elementu wynosi size bajtów.

Dodatkowe informacje

Położenie kursora zapisu danych strumienia jest nieokreślone w przypadku wystąpienia błędu w trakcie zapisu danych. Ponadto nie można określić liczby zapisanych bajtów dla elementu, który nie został w pełni zapisany.

Pamiętaj, że:
Liczba faktycznie zapisanych bajtów do strumienia będzie inna dla strumienia otwartego w trybie binarnym oraz w trybie tekstowym, ponieważ znak "\n" zostanie zastąpiony dwoma znakami "\r\n" przy zapisie danych w trybie tekstowym.

Przykład

C/C++
#include <cstdio>
#include <string>

bool zapiszDane( const char * _nazwaPliku, const char * _tekst )
{
    // Otwórz plik do zapisu w trybie tekstowym:
    FILE * plik = fopen( _nazwaPliku, "w" );
    if( !plik )
         return false;
   
    size_t zapisanychElementow = fwrite( _tekst, sizeof( char ), strlen( _tekst ), plik );
    printf( "Dlugosc tekstu = %d\n", strlen( _tekst ) );
    printf( "Zapisanych elementow = %d\n", zapisanychElementow );
    fclose( plik );
    return true;
}

bool odczytajDane( const char * _nazwaPliku )
{
    // Otwórz plik do odczytu w trybie binarnym:
    FILE * plik = fopen( _nazwaPliku, "rb" );
    if( !plik )
         return false;
   
    const int ROZMIAR_BUFORA = 1024;
    char bufor[ ROZMIAR_BUFORA ];
    size_t odczytanychElementow = fread( bufor, sizeof( char ), ROZMIAR_BUFORA, plik );
    printf( "Odczytanych elementow = %d\n", odczytanychElementow );
    fclose( plik );
    return true;
}

int main()
{
    const char * tekst = "Dokumentacja serwisu\ncpp0x.pl\n";
    const char * nazwaPliku = "plik_testowy.txt";
    if( !zapiszDane( nazwaPliku, tekst ) )
         printf( "Nie udalo sie zapisac danych.\n" );
   
    if( !odczytajDane( nazwaPliku ) )
         printf( "Nie udalo sie odczytac danych.\n" );
   
    return 0;
}
Standardowe wyjście programu:
Dlugosc tekstu = 30
Zapisanych elementow = 30
Odczytanych elementow = 32

Zagadnienia powiązane

freadWczytuje określoną ilość danych ze wskazanego strumienia. (funkcja)
ferrorSprawdza czy wystąpił błąd w strumieniu. (funkcja)

Linki zewnętrzne