Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created January 16, 2019 16:11
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/57832411cd02fe1db7dcd0b60bd74db8 to your computer and use it in GitHub Desktop.
Save parzibyte/57832411cd02fe1db7dcd0b60bd74db8 to your computer and use it in GitHub Desktop.
Remover caracteres de cadena en C created by parzibyte - https://repl.it/@parzibyte/Remover-caracteres-de-cadena-en-C
/**
Remover caracteres de una cadena
en C
@author parzibyte
*/
#include <stdio.h> // printf
/**
Remover caracteres o letras de una palabra o cadena.
Nota: esta función modifica directamente a la cadena
@param char* cadena La cadena que se va a limpiar
@param char* caracteres Una cadena con caracteres que se tienen que
quitar de la cadena
@return void
*/
void removerCaracteres(char *cadena, char *caracteres);
int main() {
char cadena[] = "Hola, soy una cadena en C. Visita parzibyte.me ;)";
char caracteres[] = ". ,;)";
printf("La cadena es: '%s'\n", cadena);
printf("Y los caracteres que se quitan son: %s\n", caracteres);
removerCaracteres(cadena, caracteres);
printf("Después de remover es: '%s'\n", cadena);
return 0;
}
void removerCaracteres(char *cadena, char *caracteres) {
int indiceCadena = 0, indiceCadenaLimpia = 0;
int deberiaAgregarCaracter = 1;
// Recorrer cadena carácter por carácter
while (cadena[indiceCadena]) {
// Primero suponemos que la letra sí debe permanecer
deberiaAgregarCaracter = 1;
int indiceCaracteres = 0;
// Recorrer los caracteres prohibidos
while (caracteres[indiceCaracteres]) {
// Y si la letra actual es uno de los caracteres, ya no se agrega
if (cadena[indiceCadena] == caracteres[indiceCaracteres]) {
deberiaAgregarCaracter = 0;
}
indiceCaracteres++;
}
// Dependiendo de la variable de arriba, la letra se agrega a la "nueva
// cadena"
if (deberiaAgregarCaracter) {
cadena[indiceCadenaLimpia] = cadena[indiceCadena];
indiceCadenaLimpia++;
}
indiceCadena++;
}
// Al final se agrega el carácter NULL para terminar la cadena
cadena[indiceCadenaLimpia] = 0;
}
@barreto-exe
Copy link

Muy útil, gracias👍👍👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment