Materiales y repaso Taller 6 2022 + Grabación

Materiales y repaso Taller 6 2022 + Grabación

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

Estimados, 

A continuación encontrarán el repaso del taller 6. La grabación del taller se encuentra en la sección: Clases Online. Se adjunta materiales y código fuente  de las soluciones de los ejercicios que se realizaron en clase.  

Este fue el último taller del ciclo de talleres de PIE 2022.


Taller 6: Entrada/Salida

Requisitos:

  • Mandatorio ver la grabación Teórico-Clase 6 (Sección: Clases Online)
  • (Opcional) Leer capítulo 7 del Libro K&R.
  • Relevamiento sobre instalación de la máquina virtual/ Entornos Linux.

Esquema:

  • En la primer mitad del taller se continuó con estructuras, particularmente con estructuras autoreferenciadas. Se adjunta código fuente visto en clase en conjunto con algunos ejercicios de práctica acompañados con su solución.
  • En la segunda parte se comenzó con el tema Entrada/Salida, se adjunta código visto en clase y repaso:
          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" abrimos el archivo para leer.

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

                                          - con "a" Abrimos un archivo para escribir, escribimos al final del archivo. Si no existe se crea.

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

                                          - con "w+" abrimos un archivo para lectura y escritura, descartamos el contenido anterior. Si no existe se crea vacío.

                                          - con "a+" abrimos un archivo como lectura y escritura, comenzamos a escribir al final del archivo. Si no existe se crea.

                   - 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 sesgo (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:

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

                    - Carpeta ejercicios_estructuras:  Ejercicios de estructuras con solución.

          Entrada/Salida:

                    - es_1.c: Abrimos un archivo como lectura y escritura, descartamos el contenido anterior, si el archivo no existe se crea.

                      Compilación y ejecución: 

                                $gcc es_1.c

                                $./a.out archivo.txt

                    - 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.

                      Compilación y ejecución: 

                                $gcc es_2.c

                                $./a.out archivo.txt


                    - es_3.c: Salida de carácter: fputc, fputs, putc. Entrada de carácter: fgetc, fgets, getc. Posicionamiento en los arhivos: fseek, rewind.

                      Compilación y ejecución: 

                                $gcc es_3.c

                                $./a.out archivo.txt