UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

9.6. Preguntas de autoevaluación

Comprueba con estas preguntas que has entendido cómo se trabaja con ficheros.

  1. Hay algo que está mal en este trozo de código, ¿qué es?:

    1    FILE *fptr;
    2    char b = ‘b’;
    3    char *c = &b;
    4    if (fptr = fopen(“file.txt”, “r”))!= NULL) 
    5    {
    6      while(!feof(fptr)) 
    7      {
    8          fwrite(c, sizeof(char),1,fptr)
    9          printf(“Character: %c”,*c);
    10     }
    11     fclose(fptr);
    12   } 
    • Pase lo que pase en la apertura del fichero, siempre se tiene que cerrar, así que la llamada a la función fclose(fptr) de la línea 11 debería ir fuera de la sentencia if, después de la línea 11.

    • Las funciones de lectura/escritura (fread/fwrite) necesitan como primer parámetro la dirección de la variable donde se va a leer o escribir información, así que la sentencia correcta de la línea 8 es fwrite(&c, sizeof(char),1,fptr);

    • La función printf necesita la dirección de la variable de tipo char, no el valor, así que la sentencia correcta de la línea 9 es printf(“Character: %c”,c);

    • Se está intentando escribir en un fichero que sólo se ha abierto para lectura.

    • El código es correcto, no hay nada mal.

  2. Abres el fichero fptr, que ocupa 100 bytes. ¿Cuál de loss siguientes pares de sentencias son equivalentes?

    • rewind(fptr);

         fseek(fptr,-0L, SEEK_END);
    • rewind(fptr);

         fseek(fptr,100L, SEEK_END);
    • rewind(fptr);

         fseek(fptr,0L, SEEK_CUR);
    • rewind(fptr);

         fseek(fptr,-100L, SEEK_SET);
    • Todas las anteriores son equivalentes.

    • Ninguna de las anteriores.

  3. Abres el fichero fptr. Comienzas a leer byte a byte. Al leer todos los datos y llegar al final, ¿cuál de estas sentencias es correcta?

    • El indicador de posición de fichero permanece al comienzo del fichero; sólo se puede mover con las funciones rewind ó fseek.

    • El indicador de posición de fichero está situado al final del fichero; se ha ido moviendo byte a byte, conforme se iba leyendo.

    • El indicador de posición de fichero permanece al comienzo del fichero; sólo se va moviendo cuando escribimos en un fichero, no cuando leemos de él.

    • Ninguna de las anteriores.