Operaciones de archivos en lenguaje C fwrite y fread
fread es una función en el estándar del lenguaje C. Lee datos de una secuencia de archivos, leyendo hasta contar elementos, cada byte de tamaño de elemento. Si la llamada tiene éxito, devuelve el número real de elementos leídos. Si no tiene éxito o se llega al final del archivo, devuelve 0. .
fwrite es una función de la biblioteca estándar del lenguaje C, que escribe un bloque de datos en un archivo. El ejemplo es el siguiente: //Leer un archivo completo
#include?lt;stdio.hgt;
#include?lt;stdlib.hgt;
int?main()
{
FILE*?pFile; //Puntero de archivo
long?lSize //Para la longitud del archivo
char*?buffer;?//?Puntero del búfer de archivo
size_t?result;?//?El valor de retorno es el número de contenidos leídos
pFile?= ?fopen("miarchivo.bin"?,?"rb");
if?(pFile?==?NULL)?{fputs("Archivo?error",?stderr);?exit( 1);}//?Si el archivo es incorrecto, salga 1
//?Obtenga el tamaño del archivo
fseek(pFile?,?0?,?SEEK_END);? //? Mueve el puntero al final del archivo
lSize?=?ftell(pFile);?//?Obtiene la longitud del archivo
rewind(pFile);?/ /?La función rewind() Mueve el puntero del archivo al principio especificado por la secuencia, borrando los errores relacionados con la secuencia y los indicadores EOF
//Asigna un búfer de memoria para todo el archivo
buffer ?=?(char*)?malloc(sizeof(char)?*?lSize);?//?Asigna el buffer de acuerdo con el ?lSize anterior
if?(buffer?==?NULL ) ?{fputs("Memoria?error",?stderr);?exit(2);}?//?Error de asignación de memoria, salida 2
//?El archivo se copia al búfer
resultado?=?fread(buffer,?1,?lSize,?pFile);?//?El valor de retorno es la cantidad de contenido leído
if?(result?! =?lTamaño )?{fputs("Reading?error",?stderr);?exit(3);}?//?Si el valor devuelto no coincide con el tamaño del archivo, lea el error
/ /?terminate?// ?Terminación del archivo
fclose(pFile);
free(buffer);
return?0;
}
Ejemplos de uso integral.
#include?lt;stdio.hgt;
int?main()
{
FILE*?pFile;
¿flotante? buffer[]?=?{?2.0?,?3.0?,?8.0?};
pFile?=?fopen("myfile.bin"?,?"wb");?//? Abrir operación de escritura de archivos
fwrite(buffer?,?1?,?sizeof(buffer)?,?pFile);?//?Escribe la matriz de punto flotante en el archivo?myfile.bin
fclose(pFile);?//?Cerrar el archivo
float?read[3];
pFile?=?fopen("myfile.bin"?, ?" rb");?//?Reabrir la operación de lectura de archivos
fread(read?,?1?,?sizeof(read)?,?pFile);?//?Leer datos del archivo
printf("f\tf\tf\n",?read[0],?read[1],?read[2]);
fclose(pFile) ;? //Cerrar el archivo
return?0;
}