Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Ejercicios de Archivos

Universidad Nacional de Río Negro

Acerca de

Estos ejercicios tienen como fin practicar la interacción de los programas con dispositivos de almacenamiento mediante streams y archivos de texto formateados en C.

Capítulos de Apunte Correspondientes

Cuestiones de Estilo Aplicables


Herramientas y Verificación

Para los siguientes ejercicios, se trabajará con archivos de texto que contienen números enteros, uno por línea. El primer número del archivo indica la cantidad total de números que le siguen.

Ejemplo numeros.txt:

1
2
3
4
5
6
5
3
-5
3
6
3

En este ejemplo, el 5 inicial indica que hay 5 números a continuación.

Ejercicio 12.1 - ¿Es correcto el formato? ⭐⭐☆☆☆

Desarrollar una función bool es_formato_correcto(const char *ruta).

Lógica: Abrir el archivo, leer el primer número (la cuenta esperada). Luego, iterar con fgets o fscanf contando las líneas restantes. Finalmente, comparar la cuenta real con la esperada.

Ejercicio 12.2 - ¿Está ordenado? ⭐⭐☆☆☆

Implementar int verificar_orden(const char *ruta).

Lógica: Leer el archivo, guardando el número anterior en cada iteración y comparándolo con el actual para determinar si la secuencia es ascendente, descendente o desordenada.


Manipulación de Archivos

Ejercicio 12.3 - Ordenar archivo ⭐⭐☆☆☆

Un programa que lea los números de un archivo a un arreglo, ordene el arreglo en memoria y luego escriba el contenido ordenado a un nuevo archivo, respetando el formato.

Ejemplo de uso: ./ordena_archivo entrada.txt salida_ordenada.txt asc

Ejercicio 12.4 - Generador lineal ⭐⭐☆☆☆

Implementar generar_lineal(ruta, cantidad, inicio, paso).

Ejemplo: generar_lineal("lineal.txt", 5, 10, 2) debe crear un archivo con:

1
2
3
4
5
6
5
10
12
14
16
18

Ejercicio 12.5 - Generador aleatorio ⭐⭐☆☆☆

Implementar generar_aleatorio(ruta, cantidad, min, max).

Lógica: Usar srand(time(NULL)) una vez al inicio del programa, y luego rand() % (max - min + 1) + min para generar cada número.


Operaciones Avanzadas

Ejercicio 12.6 - Contar Líneas, Palabras y Caracteres ⭐⭐☆☆☆

Implementar una versión simple del comando wc de Unix. El programa debe recibir una ruta de archivo y reportar el número total de líneas, palabras y caracteres que contiene.

Ejercicio 12.7 - Copiar Archivo ⭐⭐☆☆☆

Crear un programa que copie el contenido de un archivo de origen a un archivo de destino. El programa debe recibir ambas rutas como argumentos. Se puede hacer leyendo y escribiendo línea por línea o en bloques de bytes.

Ejercicio 12.8 - Buscar y Reemplazar en Archivo ⭐⭐☆☆☆

Escribir un programa que busque todas las ocurrencias de una cadena en un archivo y las reemplace por otra, guardando el resultado en un nuevo archivo de salida.

Ejercicio 12.9 - Comparar Archivos ⭐⭐⭐☆☆

Implementar un programa que compare dos archivos de texto e indique si son idénticos o no. Opcionalmente, puede reportar la primera línea y número de columna donde difieren.

Ejercicio 12.10 - Fusionar Archivos ⭐⭐⭐☆☆

Crear un programa que reciba dos rutas de archivo y fusione su contenido en un tercer archivo. El contenido del segundo archivo debe aparecer después del contenido del primero.

Ejercicio 12.11 - Dividir Archivo Grande ⭐⭐☆☆☆

Escribir un programa que divida un archivo de texto grande en varios archivos más pequeños, cada uno con un número máximo de N líneas. Los nombres de los archivos de salida pueden ser parte_1.txt, parte_2.txt, etc.

Ejercicio 12.12 - Archivos CSV - Promedio de Columna ⭐⭐⭐☆☆

Leer un archivo en formato CSV (valores separados por comas) que contiene datos de estudiantes (ej. nombre,nota1,nota2). Calcular el promedio de una columna numérica específica (ej. la segunda columna de notas) e imprimir el resultado.

Ejercicio 12.13 - Crear Archivo de Texto ⭐☆☆☆☆

Creá un archivo de texto y escribí “Hola, archivo!” en él.

Orientación:


Ejercicio 12.14 - Leer Archivo Completo ⭐☆☆☆☆

Leé y mostrá todo el contenido de un archivo de texto.

Orientación:


Ejercicio 12.15 - Contar Líneas ⭐⭐☆☆☆

Contá cuántas líneas tiene un archivo de texto.

Orientación:


Ejercicio 12.16 - Copiar Archivo ⭐⭐☆☆☆

Copiá el contenido de un archivo a otro.

Orientación:


Ejercicio 12.17 - Contar Palabras ⭐⭐⭐☆☆

Contá la cantidad de palabras en un archivo de texto.

Orientación:


Ejercicio 12.18 - Agregar al Final ⭐⭐☆☆☆

Agregá texto al final de un archivo existente sin sobrescribir.

Orientación:


Ejercicio 12.19 - Buscar Palabra ⭐⭐⭐☆☆

Buscá si una palabra específica existe en un archivo y mostrá la línea.

Orientación:


Ejercicio 12.20 - Estadísticas de Archivo ⭐⭐⭐☆☆

Calculá: líneas, palabras, caracteres y bytes de un archivo.

Orientación:


Ejercicio 12.21 - Invertir Líneas ⭐⭐⭐⭐☆

Leé un archivo y escribí sus líneas en orden inverso en otro archivo.

Orientación:


Ejercicio 12.22 - Archivo CSV a Struct ⭐⭐⭐⭐☆

Leé un archivo CSV con datos de personas y cargá en array de estructuras.

Formato CSV:

Juan,Perez,25
Maria,Gomez,30

Orientación:


Ejercicio 12.23 - Merge de Archivos Ordenados ⭐⭐⭐⭐☆

Dados dos archivos con números ordenados, generá un tercer archivo con todos ordenados.

Orientación:


Ejercicio 12.24 - Reemplazar Palabra ⭐⭐⭐⭐☆

Reemplazá todas las ocurrencias de una palabra por otra en un archivo.

Orientación:


Ejercicio 12.25 - Archivo Binario - Escribir Enteros ⭐⭐⭐☆☆

Escribí un array de enteros en un archivo binario.

Orientación:


Ejercicio 12.26 - Archivo Binario - Leer Enteros ⭐⭐⭐☆☆

Leé enteros de un archivo binario y mostralos.

Orientación:


Ejercicio 12.27 - Archivo Binario de Estructuras ⭐⭐⭐⭐☆

Guardá y leé array de estructuras en archivo binario.

Orientación:


Ejercicio 12.28 - Acceso Aleatorio ⭐⭐⭐⭐☆

Implementá CRUD (Create, Read, Update, Delete) sobre archivo binario de registros.

Orientación:


Ejercicio 12.29 - Log de Eventos ⭐⭐⭐⭐☆

Implementá sistema de logging que agregue eventos con timestamp a un archivo.

Orientación:


Ejercicio 12.30 - Compresión RLE Simple ⭐⭐⭐⭐⭐

Implementá compresión Run-Length Encoding: caracteres repetidos se almacenan como <contador><carácter>.

Ejemplo: “aaabbcccc” → “3a2b4c”

Orientación:


Ejercicio 12.31 - Índice de Archivo ⭐⭐⭐⭐⭐

Creá un índice de palabras con sus posiciones (número de línea) en el archivo.

Orientación:


Ejercicio 12.32 - Diferencia Entre Archivos (diff simple) ⭐⭐⭐⭐⭐

Implementá versión simple de diff: mostrá líneas diferentes entre dos archivos.

Orientación:


Ejercicio 12.33 - s Adicionales ⭐⭐☆☆☆

Ejercicio 12.34 - Cifrado César ⭐⭐⭐⭐☆

Cifrá/descifrá un archivo usando cifrado César (rotación de N posiciones en alfabeto).

Orientación:


Ejercicio 12.35 - Archivo de Configuración ⭐⭐⭐⭐☆

Leé archivo de configuración estilo clave=valor.

Ejemplo:

puerto=8080
host=localhost
timeout=30

Orientación:


Ejercicio 12.36 - Serialización JSON Simple ⭐⭐⭐⭐⭐

Escribí y leé una estructura simple en formato JSON.

Orientación:


Notas Finales

Estas consignas cubren operaciones de archivo desde básicas hasta avanzadas, tanto en modo texto como binario, preparando para manejo robusto de persistencia de datos.