std:: fread
|
Definido en el encabezado
<cstdio>
|
||
|
std::
size_t
fread
(
void
*
buffer,
std::
size_t
size,
std::
size_t
count,
std::
FILE
*
stream
)
;
|
||
Lee hasta count objetos en el arreglo buffer desde el flujo de entrada dado stream como si se llamara std::fgetc size veces para cada objeto, y almacena los resultados, en el orden obtenido, en las posiciones sucesivas de buffer , el cual es reinterpretado como un arreglo de unsigned char . El indicador de posición del archivo para el flujo se avanza según el número de caracteres leídos.
Si los objetos no son TriviallyCopyable , el comportamiento es indefinido.
Si ocurre un error, el valor resultante del indicador de posición de archivo para el flujo es indeterminado. Si se lee un elemento parcial, su valor es indeterminado.
Contenidos |
Parámetros
| buffer | - | puntero al primer objeto en el array a leer |
| size | - | tamaño de cada objeto en bytes |
| count | - | número de objetos a leer |
| stream | - | flujo de archivo de entrada desde el cual leer |
Valor de retorno
Número de objetos leídos exitosamente, que puede ser menor que count si ocurre un error o una condición de fin de archivo.
Si
size
o
count
es cero,
fread
retorna cero y no realiza ninguna otra acción.
fread
no distingue entre fin-de-archivo y error, y los llamadores deben usar
std::feof
y
std::ferror
para determinar cuál ocurrió.
Ejemplo
#include <cstddef> #include <cstdio> #include <fstream> #include <iomanip> #include <iostream> #include <vector> int main() { // Preparar archivo std::ofstream("test.txt") << 1 << ' ' << 2 << '\n'; std::FILE* f = std::fopen("test.txt", "r"); std::vector<char> buf(4); // char es trivialmente copiable const std::size_t n = std::fread(&buf[0], sizeof buf[0], buf.size(), f); std::cout << "Leídos " << n << " objeto" << (n > 1 ? "s" : "") << ": " << std::hex << std::uppercase << std::setfill('0'); for (char n : buf) std::cout << "0x" << std::setw(2) << static_cast<short>(n) << ' '; std::cout << '\n'; std::vector<std::string> buf2; // string no es trivialmente copiable // Esto resultaría en comportamiento indefinido: // std::fread(&buf2[0], sizeof buf2[0], buf2.size(), f); }
Salida posible:
Leídos 4 objetos: 0x31 0x20 0x32 0x0A
Véase también
|
lee entrada formateada desde
stdin
, un flujo de archivo o un búfer
(función) |
|
|
obtiene una cadena de caracteres desde un flujo de archivo
(función) |
|
|
escribe a un archivo
(función) |
|
|
Documentación C
para
fread
|
|