Tengo dos preguntas acerca de C fread función:

  1. He leído que fread se utiliza para leer un archivo binario. Sin embargo, cuando comencé a leer un archivo binario con fgets utilizando el modo de lectura "r" y un archivo de texto con fread utilizando "rb" modo, los resultados son los mismos, como la lectura de un archivo de texto con fgets y un archivo binario con fread. Así que, ¿por qué hay diferentes funciones para la lectura de binarios y archivos de texto?
  2. Estoy usando fread a leer 10 bytes de un archivo en una llamada. ¿Cómo debo dejar de leer en el final del archivo, es decir, cómo es EOF especificado en fread?
todos los archivos son archivos binarios, que es la forma de abrir la que determina si el FINAL DE la LÍNEA de carácter que debería significar algo o no.

OriginalEl autor mainajaved | 2011-10-14

3 Comentarios

  1. 10

    respuesta de 1 pregunta >

    1>fread

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

    De lectura de bloque de datos de secuencia de (tratar de entender esto)

    Se lee en una matriz de conteo de elementos, cada uno con un tamaño de tamaño de bytes, a partir de la corriente y los almacena en el bloque de memoria especificada por el ptr.
    El indicador de posición de la secuencia es avanzado por la cantidad total de bytes leídos.
    La cantidad total de bytes leídos si es exitoso (*el tamaño de la cuenta).

    2>fgets

    char * fgets ( char * str, int num, FILE * stream );

    Obtener la cadena de flujo de (tratar de entender esto)

    Lee los caracteres de flujo y las almacena como una cadena C en str hasta (num-1) caracteres han sido leídos o un salto de línea o un Fin-de-Archivo, lo que ocurra primero.
    Un carácter de nueva línea hace fgets dejar de leer, pero se considera un carácter válido y por lo tanto se incluye en la cadena copiada a la str.
    Un carácter nulo se agrega automáticamente en str después de los caracteres de lectura para indicar el final de la cadena C.


    respuesta a la 2ª pregunta
    en fread valor de retorno es

    El número total de elementos de leer correctamente es devuelto como una size_t objeto, que es una integral de tipo de datos.
    Si este número difiere el número de parámetro, o bien se produjo un error o el Final De un Archivo, fue alcanzado.

    Usted puede utilizar cualquiera de los ferror o feof para comprobar si ocurrió un error o el Fin-de-Archivo fue alcanzado.

    OriginalEl autor

  2. 2

    Cuando usted habla de «r» y «rb» modos (binarios y de texto), probablemente refiriéndose a fopen. En la mayoría de los sistemas operativos no hace ninguna diferencia si usted abre un archivo en modo binario o en modo texto, pero en algunos sistemas operativos hay traducciones que deberá llevarse a cabo en modo de texto que se han deshabilitado en modo binario. Un ejemplo de esto es cuando se ejecuta en ms-DOS o Windows, donde al final de la línea de caracteres de conversión se lleva a cabo en modo de texto, pero no en modo binario.

    Es una buena idea para entrar en el hábito de usar «rb» con fopen para archivos binarios, aunque no tiene ningún efecto en la mayoría de las plataformas – que siempre es posible que en algún momento en el futuro que su código necesario para ejecutar un sistema operativo donde esta materia.

    OriginalEl autor

  3. 0

    Si estamos haciendo el I/O binario, a menudo nos gustaría leer o escribir toda una
    estructura en un momento. Para ello el uso de getc o putc, tenemos un bucle a través de toda la estructura, un byte a la vez, la lectura o escritura de cada byte. No puede usar la línea-en-un-funciones de tiempo, ya que fputs deja de escribir cuando se golpea con un byte nulo, y no puede ser null bytes dentro de la estructura. Del mismo modo, fgets no trabajar a la derecha en la entrada si alguno de los bytes de datos son nulos o saltos de línea, por lo tanto fread y fwrite se proporciona.

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here