Exportar (0) Imprimir
Expandir todo
div
eof
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

fread_s

Lee los datos de una secuencia. Esta versión de fread tiene mejoras de seguridad, como se describe en Características de seguridad de CRT.

size_t fread_s( 
   void *buffer,
   size_t bufferSize,
   size_t elementSize,
   size_t count,
   FILE *stream 
);
buffer

Ubicación de almacenamiento de los datos.

bufferSize

Tamaño del búfer de destino en bytes.

elementSize

Tamaño del elemento para leer en bytes.

count

Número máximo de elementos que se va a leer.

stream

Puntero a la estructura de FILE .

fread_s devuelve el número de elementos (integer) que se han leído en el búfer, que puede ser menor que count si un error de lectura o el final del archivo se encuentra antes de alcanzar count . Utilice la función de feof o de ferror para distinguir un error de una condición de fin de archivo. Si size o count es 0, fread_s devuelve 0 y el contenido del búfer no se modifican. Si stream o buffer es un puntero NULL, fread_s invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, conjuntos errno de esta función a EINVAL y a retornos 0.

Para obtener más información sobre los códigos de error, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

La función de fread_s lee hasta count elementos de bytes de elementSize de entrada stream y los almacena en buffer. El puntero de archivo asociada a stream (si hay alguno) es aumentado por el número de bytes leídos realmente. Si la secuencia especificada se abre en modo de texto, los pares de retorno- avance de línea de carro se reemplazan por los únicos caracteres de avance de línea. El reemplazo no tiene ningún efecto en el puntero de archivo o el valor devuelto. La posición del archivo (el archivo puntero es indeterminado si se produce un error. El valor de un elemento de lectura no se puede determinar parcialmente.

Esta función bloquea out otros subprocesos. Si necesita una versión de modificación limitada de interpretación, utilice _fread_nolock.

Función

Encabezado necesario

fread_s

<stdio.h>

Para obtener información adicional de compatibilidad, vea compatibilidad.


// crt_fread_s.c
// Command line: cl /EHsc /nologo /W4 crt_fread_s.c
//
// This program opens a file that's named FREAD.OUT and
// writes characters to the file. It then tries to open
// FREAD.OUT and read in characters by using fread_s. If the attempt succeeds,
// the program displays the number of actual items read.
 
#include <stdio.h>

#define BUFFERSIZE 30
#define DATASIZE 22
#define ELEMENTCOUNT 2
#define ELEMENTSIZE (DATASIZE/ELEMENTCOUNT)
#define FILENAME "FREAD.OUT"

int main( void )
{
   FILE *stream;
   char list[30];
   int  i, numread, numwritten;

   for ( i = 0; i < DATASIZE; i++ )
      list[i] = (char)('z' - i);
   list[DATASIZE] = '\0'; // terminal null so we can print it
      
   // Open file in text mode:
   if( fopen_s( &stream, FILENAME, "w+t" ) == 0 )
   {
      // Write DATASIZE characters to stream 
      printf( "Contents of buffer before write/read:\n\t%s\n\n", list );
      numwritten = fwrite( list, sizeof( char ), DATASIZE, stream );
      printf( "Wrote %d items\n\n", numwritten );
      fclose( stream );
   } else {
      printf( "Problem opening the file\n" );
      return -1;
   }

   if( fopen_s( &stream, FILENAME, "r+t" ) == 0 )   {
      // Attempt to read in characters in 2 blocks of 11
      numread = fread_s( list, BUFFERSIZE, ELEMENTSIZE, ELEMENTCOUNT, stream );
      printf( "Number of %d-byte elements read = %d\n\n", ELEMENTSIZE, numread );
      printf( "Contents of buffer after write/read:\n\t%s\n", list );
      fclose( stream );
   } else {
      printf( "File could not be opened\n" );
      return -1;
   }
}

Contenido del búfer antes de escritura o lectura: 
        zyxwvutsrqponmlkjihgfe
Escribió 22 elementos
El número de 11 elementos de bytes lee = 2
Contenido del búfer cuando la escritura o lectura: 
        zyxwvutsrqponmlkjihgfe
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.