Materiales y repaso taller 6a PIE 2021-04-22

Materiales y repaso taller 6a PIE 2021-04-22

de Juan Pablo Garella -
Número de respuestas: 0

Taller 6a: Entrada/Salida 


Requisitos: 

- Tener leído Capítulo 7 del Libro.


Esquema: 

- En la primer mitad del taller se continuó con el tema estructuras, particularmente con estructuras autoreferenciadas. Se adjunta código fuente visto en clase en conjunto con los ejercicios realizados.

      - En la segunda parte se comenzó con el tema Entrada/Salida, se presentó ejercicio 1, práctico 8: "Hola archivo" y se realizó un repaso de Entrada/Salida:

1.  Abrir y/o crear un archivo para lectura y/o escritura y luego cerrarlo:

- FILE *fopen(const char *filename, const char *mode): Abre un archivo del disco para lectura o escritura.

Se requiere el nombre del archivo a abrir o crear, y el modo de apertura:

- con "r" abrirmos el archivo para leer

- con "w" creamos un archivo para escribir, descartamos contenido anterior

- con "a" creamos un archivo para escribir, escribimos al final del archivo

- con "r+" abrimos un archivo como lectura y escritura, comenzando al inicio

- con "w+" abrimos un archivo como lectura y escrtura, descartamos el contenido anterior

- con "a+" abrimos un archivo como lectura y escritura, comenzamos a escribir al final del archivo

- int fclose(FILE *stream): Cierra un archivo que se ha abierto


2. Leemos y escribimos con formato: fscanf y fprintf:

- int fscanf(FILE *stream, const char *format, ...): lee la entrada con formato desde un flujo de datos

- int fprintf(FILE *stream, const char *format, ...): escribe con formato hacia un flujo de datos


3. Escribimos caracteres: putc, fputc, fputs:

- int putc(int character, FILE* stream): escribe un carácter en el flujo de datos (puede ser implementado como un macro)

- int fputc(int character, FILE* stream): lo mismo que putc (no puede ser implementado como un macro)

- int fputs (const char* str, FILE* stream): escribe un string en el flujo de datos hasta encontrar el carácter '\0'


4. Leemos caracteres: getc, fgetc, fgets:

- int getc(FILE* stream): obtiene un carácter desde un flujo de datos (puede ser implementado como un macro)

- int fgetc(FILE* stream): lo mismo que getc (no puede ser implementado como un macro)

- char* fgets(char* str, int num, FILE* stream): obtiene un string desde un flujo de datos, hasta haber leido num-1 caracteres, o hasta encontrar un espacio o fin de linea. Lo que llegue primero.


5. Posicionamiento en los archivos: fseek, rewind:

- int fseek(FILE *stream, long int offset, int whence): 

- stream:  Puntero a flujo (stream) de tipo FILE.

- offset: Número de bytes de bias (offset) desde whence.

- whence: Es la posición desde la que se agrega el bias (offset). Se especifica por medio de las siguientes constantes:

Constant Description

SEEK_SET Principio del archivo

SEEK_CUR Posición actual 

SEEK_END Fin del archivo

- void rewind(FILE *stream): fija la posición del archivo al comienzo del archivo del flujo de datos


Código fuente adjunto, ejemplos vistos en clase:

Estructuras:

- estructuras.c: Código fuente visto en clase

Ejemplo de compilación y corrida en terminal:

$gcc estructuras.c

$./a.out hola

- Carpeta ejercicios_estructuras:  Ejercicios con solución.


Entrada/Salida:

- es_1.c: Abrimos un archivo como lectura y escrtura, descartamos el contenido anterior.

- es_2.c: Salida con formato: probamos escribir con puts y fprintf. Entrada con formato: probamos leer el archivo escrito previamente con fscanf utilizando el formato establecido y lo escribimos en consola.

Ejemplo de compilación y corrida en terminal:

$gcc es_1.c

$./a.out hola


En el siguiente taller se seguirá con Entrada/Salida (posicionamiento: fseek, rewind) y se dará lectura de la letra del obligatorio 2.