-
-
Save parzibyte/fea29d5ed8a8585dac2ce9ea8ac829ad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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