Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created March 18, 2020 22:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/fea29d5ed8a8585dac2ce9ea8ac829ad to your computer and use it in GitHub Desktop.
Save parzibyte/fea29d5ed8a8585dac2ce9ea8ac829ad to your computer and use it in GitHub Desktop.
void arreglarTexto(char *linea, char destino[MAXIMA_LONGITUD_LINEA]) {
// Bandera para saber si el teclado presionó [ o ]
int deberiaEscribirAlInicio = 0;
// Si se escribe al inicio se debe llevar un contador para evitar
// colocar el texto al revés
int contador = 0;
/*
* Recorrer la línea letra por letra...
* */
for (size_t x = 0; x < strlen(linea); x++) {
char caracterActual = linea[x];
// Una cadena de un único carácter, útil para convertir char a char*
char cadenaTemporal[2] = "\0";
cadenaTemporal[0] = caracterActual;
// Si se detecta un [ o ] entonces se reinicia el contador
if ((caracterActual == FIN || caracterActual == INICIO) && deberiaEscribirAlInicio) {
contador = 0;
}
// Si se encuentra un [ o ] entonces solo se cambia la bandera y se salta en el ciclo
if (caracterActual == INICIO) deberiaEscribirAlInicio = 1;
else if (caracterActual == FIN) deberiaEscribirAlInicio = 0;
if (caracterActual == INICIO || caracterActual == FIN) continue;
// Arreglar la línea. Si es al inicio inserta la letra en la cadena según el contador
if (deberiaEscribirAlInicio) {
insertarSubcadena(destino, cadenaTemporal, contador);
contador++;
} else {
// Si no, la agrega al final, usando strcat
strcat(destino, cadenaTemporal);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment