En este post te mostraré cómo resolver un ejercicio en C del teclado descompuesto, se trata del trabajo con cadenas, listas dinámicas y escritura de archivos; es un ejercicio muy interesante.

Descripción del ejercicio

Supongamos que estamos escribiendo un texto pero que el teclado está descompuesto y por lo tanto, aleatoriamente, se presiona la tecla inicio (la que mueve el cursor al inicio) y fin (la que mueve el cursor al final) mientras escribimos. Nosotros no nos fijamos de ello hasta que miramos el texto.

Afortunadamente, tenemos en el texto el carácter [ que indica que se presionó la tecla Inicio, y el carácter ] que indica que se presionó la tecla Fin.

Dado un archivo de entrada con texto, y con los caracteres indicando el inicio y el fin, escribir el texto que debió ser escrito, es decir, corregirlo. Por ejemplo:

Texto de entrada es Hola[Mundo entonces texto de salida es MundoHola.

Casos de uso

Si no te quedó claro con el ejemplo de arriba te muestro otras pruebas de cómo debería ser la salida y la entrada

See the gist on github.

Cargar archivo en lista

Lo primero que tenemos que hacer es cargar el archivo de entrada en memoria, para ello usamos una lista. En mi caso utilicé simplemente una pila, pero en lugar de agregar los elementos al inicio, agregué los elementos al final.

La función que carga el archivo es la siguiente:

See the gist on github.

Nota: si no entiendes de dónde vienen algunas variables o constantes, al final dejaré el archivo del código completo, no te preocupes.

Como ves, por cada línea del archivo se remueve el salto de línea con strtok. Además, se invoca a la función agregarLineaALista así:

See the gist on github.

Lo que hace esa función es crear un nuevo nodo de la lista, colocarle la línea recién leída y después poner ese nodo al final.

Arreglar texto

La función que realmente hace el trabajo es la que veremos a continuación. Lo que hace es recorrer la cadena e insertar el texto ya arreglado de acuerdo a lo que vaya encontrando; es decir, coloca el cursor antes o después.

See the gist on github.

Dentro de esa función se utiliza otra función para insertar texto en otra cadena; esto se usa para cuando el texto va al inicio, pues cuando va al final se puede usar strcat.

See the gist on github.

Escribir lista enlazada en archivo usando C

Para terminar recorremos la lista y escribimos el texto ya arreglado en otro archivo:

See the gist on github.

Eso creará el nuevo archivo con las modificaciones ya hechas.

Código completo

El código completo del ejercicio del teclado descompuesto en C queda como se ve a continuación.

See the gist on github.

Recuerda que si quieres probarlo debes tener el archivo teclado-entrada.txt en el mismo directorio en donde el programa se ejecuta.

Conclusión

Si quieres puedes ver más ejercicios de C en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Compartir
Publicado por
parzibyte

Entradas recientes

Monitorear cola de impresión en Windows

En este artículo te voy a enseñar a monitorear la cola de impresión de una…

10 horas hace

Solución: Unable to extract uploader id con youtube-dl

En mi blog te he enseñado a usar youtube-dl para descargar vídeos con permiso del…

4 días hace

Enviar foto a Telegram usando cURL y Bot

Siguiendo con los tutoriales que consumen la API de los Bots de Telegram con cURL…

4 días hace

cURL y Telegram: enviar mensaje a Bot

En un post previo te enseñé a enviar un mensaje en nombre de un Bot…

4 días hace

Impresora térmica con Telegram usando Bot

En este artículo te voy a mostrar una guía para imprimir en una impresora térmica…

5 días hace

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

1 semana hace

Esta web usa cookies.