Materiales y repaso Taller 6 (útlimo taller) 2023 + Grabación

Materiales y repaso Taller 6 (útlimo taller) 2023 + 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 curso.


Requisitos:

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

                    - 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