Funkce C fread().
The C fread() je standardní knihovní funkce používaná ke čtení daného množství dat ze souborového toku. Funkce fread() definovaná uvnitř čte daný počet prvků určité velikosti ze souborového toku a ukládá jej do vyrovnávací paměti. Celkový počet bajtů přečtených funkcí fread() je počet přečtených prvků vynásobený velikostí každého prvku v bajtech.
Syntaxe C fread()
size_t fread (void * buffer , size_t size , size_t count , FILE * stream );
Indikátor pozice souboru se automaticky posune dopředu o počet přečtených bajtů. Pokud čtené objekty nejsou triviálně kopírovatelné, jako jsou struktury nebo složité datové typy, nechová se správně.
Parametry
- buffer: Odkazuje na ukazatel na blok vyrovnávací paměti, kde budou uložena načtená data. velikost: Vztahuje se k velikosti každého prvku v bajtech. počet: Vztahuje se k počtu prvků, které mají být přečteny. stream: Odkazuje na ukazatel na datový proud souboru.
Návratová hodnota
- Funkce vrací počet prvků, které byly úspěšně načteny ze souboru.
- Pokud je vrácená hodnota menší než počet, znamená to, že došlo k chybě nebo došlo na konec souboru.
- Pokud je hodnota size nebo count nula, fread() vrátí nulu a neprovede žádnou další akci.
Poznámka: Funkce fread() sama o sobě neposkytuje způsob, jak rozlišit mezi koncem souboru a chybou, k určení, která nastala, lze použít feof a ferror.
Příklady C fread()
Příklad 1
Níže uvedené programy ilustrují funkci fread().
C
// C program to illustrate fread() function> #include> int> main()> {> > // File pointer> > FILE> * filePointer;> > // Buffer to store the read data> > char> buffer[100];> > // 'g4g.txt' file is opened in read mode> > filePointer => fopen> (> 'g4g.txt'> ,> 'r'> );> > > // Data is read from the file into the buffer> > // sizeof(buffer) specifies the size of each element to> > // be read 1 is the number of elements to read> > // filePointer is the file to read from> > while> (!> feof> (filePointer)) {> > fread> (buffer,> sizeof> (buffer), 1, filePointer);> > // Print the read data> > printf> (> '%s'> , buffer);> > }> > fclose> (filePointer);> > return> 0;> }> |
Předpokládejme, že soubor g4g.txt obsahuje následující data:
Geeks : DS-ALgo Gfg : DP Contribute : writearticle
Poté po spuštění programu bude výstup
Geeks : DS-ALgo Gfg : DP Contribute : writearticle
Příklad 2
Tento program v jazyce C demonstruje použití funkce fread(), když je velikost nebo počet souboru roven 0.
C
// C program to illustrate fread() function> // when size of the file or the value of count is equal to 0> #include> int> main()> {> > // File pointer> > FILE> * filePointer;> > // Buffer to store the read data> > char> buffer[100];> > // 'g4g.txt' file is opened in read mode> > filePointer => fopen> (> 'g4g.txt'> ,> 'r'> );> > // Case when count is equal to 0> > printf> (> 'count = 0, return value = %zu
'> ,> > fread> (buffer,> sizeof> (buffer), 0, filePointer));> > // Case when size is equal to 0> > printf> (> 'size = 0, return value = %zu
'> ,> > fread> (buffer, 0, 1, filePointer));> > return> 0;> }> |
Výstup
count = 0, return value = 0 size = 0, return value = 0
C++
// C++ program to illustrate the vector container> #include> #include> using> namespace> std;> int> main()> {> > // 1d vector with initialization list> > vector <> int> >v1 = { 1, 2, 3, 4, 5 };> > // 2d vector with size and element value initialization> > vectorint>> v2(3, vektor |
Výstup
v1: 1 2 3 4 5 6 v2: 1 2 3 4 6 v2:- 5 5 5 5 5 5 5 5 5