logo

Funció C fread().

El C fread() és una funció de biblioteca estàndard que s'utilitza per llegir la quantitat determinada de dades d'un flux de fitxers. Definida dins de , la funció fread() llegeix el nombre donat d'elements de mida específica del flux de fitxers i l'emmagatzema a la memòria intermèdia. El nombre total de bytes llegits per la funció fread() és el nombre d'elements llegits multiplicat per la mida de cada element en bytes.

Sintaxi de C fread()

size_t fread (void * buffer , size_t size , size_t count , FILE * stream );>

L'indicador de posició del fitxer es mou automàticament cap endavant pel nombre de bytes llegits. Si els objectes que es llegeixen no es poden copiar de manera trivial, com ara estructures o tipus de dades complexos, no es comporta correctament.



Paràmetres

    buffer: Fa referència al punter al bloc de memòria buffer on s'emmagatzemaran les dades llegides. mida: fa referència a la mida de cada element en bytes. recompte: fa referència al recompte d'elements a llegir. flux: fa referència al punter al flux d'arxius.

Valor de retorn

  • La funció retorna el nombre d'elements que es llegeixen correctament del fitxer.
  • Si el valor de retorn és inferior al recompte, vol dir que s'ha produït un error o que ha arribat al final del fitxer.
  • Si el valor de mida o recompte és zero, fread() retorna zero i no realitza cap altra acció.

Nota: La funció fread() en si no proporciona una manera de distingir entre el final del fitxer i l'error, es poden utilitzar feof i ferror per determinar quin s'ha produït.

Exemples de C fread()

Exemple 1

Els programes següents il·lustren la funció 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;> }>

>

>

Suposem que el fitxer g4g.txt conté les dades següents:

Geeks : DS-ALgo Gfg : DP Contribute : writearticle>

Aleshores, després d'executar el programa, la sortida serà

np std
Geeks : DS-ALgo Gfg : DP Contribute : writearticle>

Exemple 2

Aquest programa C demostra l'ús de la funció fread() quan la mida o el nombre del fitxer és igual a 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;> }>

>

>

Sortida

count = 0, return value = 0 size = 0, return value = 0>

C++




si 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, vector (3, 5)); // afegint valors utilitzant push_back() v1.push_back(6); // imprimint v1 utilitzant 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; }>

>

>

Sortida

v1: 1 2 3 4 5 6 v2: 1 2 3 4 6 v2:- 5 5 5 5 5 5 5 5 5>