fread
Odczytuje dane ze strumienia.
size_t fread(
void *buffer,
size_t size,
size_t count,
FILE *stream
);
Parametry
buffer
Miejsca przechowywania danych.size
Rozmiar w bajtach.count
Maksymalna liczba elementów do odczytu.stream
Wskaźnik, aby FILE struktury.
Wartość zwracana
freadZwraca liczbę pełnych elementów odczytanych w rzeczywistości, które mogą być mniej niż count w przypadku wystąpienia błędu lub jeśli okaże się, przed osiągnięciem końca pliku count*.* Użyj feof lub ferror funkcji, aby odróżnić błąd odczytu z warunek końca pliku.Jeśli size lub count jest równa 0, fread zwraca wartość 0 i zawartość buforu nie ulegną zmianie.Jeśli stream lub buffer jest wskaźnik zerowy, fread wywołuje obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ta funkcja ustawia errno do EINVAL i zwraca wartość 0.
Zobacz _doserrno, errno, _sys_errlist i _sys_nerr więcej informacji na temat tych i innych kodów błędów.
Uwagi
fread Funkcji odczytuje do count elementy z size bajtów w wejściowych danych stream i przechowuje je w buffer*.* Wskaźnik pliku skojarzone z stream (jeśli istnieje) wzrasta liczba bajtów odczytanych w rzeczywistości.Jeśli dany strumień jest otwarty w trybie tekstowym, przewozu ze zmianą wiersza pary są zastępowane znaki wysuwu wiersza pojedynczy.Zastąpienie nie ma wpływu na wskaźnik pliku lub zwracanej wartości.Położenie wskaźnika pliku jest nieokreślony, jeśli wystąpi błąd.Nie można określić wartość częściowo odczytu elementu.
Ta funkcja blokuje się inne wątki.Jeśli potrzebna jest wersja blokowania, należy użyć _fread_nolock.
Wymagania
Funkcja |
Wymaganego nagłówka |
---|---|
fread |
<stdio.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// crt_fread.c
// This program opens a file named FREAD.OUT and
// writes 25 characters to the file. It then tries to open
// FREAD.OUT and read in 25 characters. If the attempt succeeds,
// the program displays the number of actual items read.
#include <stdio.h>
int main( void )
{
FILE *stream;
char list[30];
int i, numread, numwritten;
// Open file in text mode:
if( fopen_s( &stream, "fread.out", "w+t" ) == 0 )
{
for ( i = 0; i < 25; i++ )
list[i] = (char)('z' - i);
// Write 25 characters to stream
numwritten = fwrite( list, sizeof( char ), 25, stream );
printf( "Wrote %d items\n", numwritten );
fclose( stream );
}
else
printf( "Problem opening the file\n" );
if( fopen_s( &stream, "fread.out", "r+t" ) == 0 )
{
// Attempt to read in 25 characters
numread = fread( list, sizeof( char ), 25, stream );
printf( "Number of items read = %d\n", numread );
printf( "Contents of buffer = %.25s\n", list );
fclose( stream );
}
else
printf( "File could not be opened\n" );
}