Składnia
#include <cstdio>
size_t fread( void * buffer, size_t size, size_t count, FILE * stream );
Argumenty
Zwracana wartość
Zwraca liczbę poprawnie wczytanych elementów. Zwrócona wartość może być mniejsza niż wartość
count jeżeli w trakcie wczytywania danych wystąpił błąd lub został osiągnięty koniec pliku zanim wczytano oczekiwaną liczbę elementów. W celu ustalenia rodzaju błędu jaki wystąpił podczas wczytywania danych należy użyć funkcji
ferror lub
feof.
Jeżeli argument
size lub
count ma wartość 0, to funkcja zwróci wartość 0 oraz zawartość bufora wyjściowego nie ulegnie zmianie.
Opis szczegółowy
Funkcja odczytuje ze strumienia maksymalnie
count elementów, gdzie rozmiar każdego elementu wynosi
size bajtów.
Dodatkowe informacje
Niniejsza funkcja zapisze do bufora maksymalnie
size*count bajtów w przypadku sukcesu.
Położenie kursora odczytu danych strumienia jest nieokreślone w przypadku wystąpienia błędu w trakcie odczytu danych. Ponadto nie można określić liczby odczytanych bajtów dla elementu, który nie został w pełni odczytany.
Pamiętaj, że: Liczba faktycznie odczytanych bajtów ze strumienia będzie inna dla strumienia otwartego w trybie binarnym oraz w trybie tekstowym, ponieważ para znaków "\r\n" zostanie zastąpiona jednym znakiem "\n" przy odczycie danych w trybie tekstowym.
|
Przykład
#include <cstdio>
bool wyswietlFragmentPliku( const char * _nazwaPliku )
{
FILE * plik = fopen( _nazwaPliku, "rb" );
if( !plik )
return false;
const int LICZBA_ELEMENTOW = 1000;
char bufor[ LICZBA_ELEMENTOW ];
size_t odczytanychBajtow = fread( bufor, sizeof( char ), LICZBA_ELEMENTOW, plik );
if( odczytanychBajtow != LICZBA_ELEMENTOW )
printf( "Odczytano mniej bajtow niz rozmiar bufora.\n" );
printf( "Zawartosc bufora (%d bajtow):", odczytanychBajtow );
printf( "\n=================\n" );
printf( "%.*s", odczytanychBajtow, bufor );
printf( "\n=================\n" );
fclose( plik );
return true;
}
int main()
{
if( !wyswietlFragmentPliku( "main.cpp" ) )
printf( "Nie udalo sie odczytac pliku.\n" );
return 0;
}
Standardowe wyjście programu:
Odczytano mniej bajtow niz rozmiar bufora.
Zawartosc bufora (740 bajtow):
=================
#include <cstdio>
bool wyswietlFragmentPliku( const char* _nazwaPliku )
{
FILE* plik = fopen(_nazwaPliku,"rb");
if(!plik)
return false;
const int LICZBA_ELEMENTOW = 1000;
char bufor[LICZBA_ELEMENTOW];
size_t odczytanychBajtow = fread (bufor, sizeof( char ), LICZBA_ELEMENTOW, plik);
if (odczytanychBajtow != LICZBA_ELEMENTOW)
printf("Odczytano mniej bajtow niz rozmiar bufora.\n.");
printf("Zawartosc bufora (%d bajtow):",odczytanychBajtow);
printf("\n=================\n");
printf("%.*s",odczytanychBajtow, bufor);
printf("\n=================\n");
fclose(plik);
return true;
}
int main()
{
if(!wyswietlFragmentPliku("main.cpp"))
printf("Nie udalo sie odczytac pliku.\n");
return 0;
}
=================
Zagadnienia powiązane
fwrite | Zapisuje do pliku. (funkcja) |
---|
fgets | Wczytuje jeden wiersz tekstu ze wskazanego strumienia. (funkcja) |
---|
fgetc | Wczytuje znak ze wskazanego strumienia. (funkcja) |
---|
Linki zewnętrzne
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.