logo

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

git add --all
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++




logo java

// 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 (3, 5)); // přidání hodnot pomocí push_back() v1.push_back(6); // tisk v1 pomocí size() cout<< 'v1: '; for (int i = 0; i cout << v1[i] << ' '; } cout << endl; // deleting value usign erase and iterators v1.erase(v1.begin() + 4); // printing v1 using iterators cout << 'v2: '; for (auto i = v1.begin(); i != v1.end(); i++) { cout << *i << ' '; } cout << endl; // printing v2 using range based for loop cout << 'v2:-' << endl; for (auto i : v2) { for (auto j : i) { cout << j << ' '; } cout << endl; } return 0; }>

>

>

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>