Ejercicios - Archivos en C
Les dejo algunos ejercicios de archivos para que practiquen. Ayúdense con las presentaciones de clase, los ejemplos que subí antes y el man, cualquier duda nos consultan.
1) Escriba un programa que lea el archivo de texto que recibe por teclado y determine:
- Cantidad total de palabras
- Cantidad de veces que aparece la palabra “Leandro”
2) Escriba un programa que lea el archivo “ejemplo.txt”, línea por línea, y escriba en un archivo denominado “salida.txt” aquellas líneas del primer archivo que NO contengan la palabra “pepe” (sugerencia: usar la función desarrollada en el ejercicio 4.17 de la guía para practicar)
3) Escriba un programa que lea pida al usuario el nombre de un archivo de texto por teclado y una string a filtrar, y censure esa string con todos caracteres 'X'. Por ejemplo:
- Si el usuario quiere ocultar el string “pepe”, y en el archivo de texto a censurar hay una línea que diga “Mi amigo pepe viaja en colectivo”, el programa debe devolver en un archivo de salida “Mi amigo XXXX viaja en colectivo”.
- Sugerencia: realizar una función llamada reemplazo que tenga el siguiente prototipo: void reemplazo(char *entrada, char *filtro, char reemplazo). Leer el archivo de a una línea por vez, y llamar a la función reemplazo pasándole como parámetros el puntero a la dirección de comienzo del string leído del archivo, otro con el string a censurar, y el caracter que reemplazará.
4) Realizar un programa que reciba por línea de comando el nombre de archivo de un diccionario, que tendrá en cada línea una palabra diferente, y devuelva una palabra de forma aleatoria por pantalla.
- Sugerencia: utilizar rand(), ayúdense por el ejemplo del dado que vimos en clase. Creen una función que llame a rand() y devuelva un número entre 0 y la cantidad máxima de líneas del diccionario. Pueden cargar cada una de las líneas del archivo diccionario en una matriz de caracteres, tratando a cada una de las filas como un string diferente.
- Por ejemplo:
char diccionario[LINEAS][100]; for(i=0; i<LINEAS; i++) fgets(diccionario[i], 99, archivo);
5) Realizar un programa que lea de un archivo una línea por vez, y usando las funciones desarrolladas en el ejercicio 4.27, indique si son válidas como dirección IP, e-mail, o número de tarjeta de crédito. El programa deberá imprimir por ejemplo:
"La línea 1 es: e-mail" "La línea 2 es: dirección IP" "La línea 3 es: inválida" "La línea 4 es: tarjeta de crédito"
6) Realizar un programa que lea por consola el nombre de un archivo de entrada, el nombre de un archivo de salida, y copie la entrada en la salida. Por ejemplo:
./copy "./entrada.txt" "./salida.txt"
- Sugerencia: declarar un vector de char que usaremos como “buffer”, y llenarlo con fread().
7) Realizar una función que reciba como parámetro un puntero a una cadena de caracteres terminada en '\0' conteniendo el nombre de un archivo de texto, y retorne la cantidad de bytes de ese archivo.
- Por ejemplo:
int tamanioarchivo(char *archivo).
- Sugerencia: Utilicen el man para conocer más sobre el valor de retorno de fread();