Advertisement
AntonioVillanueva

Filtra caracteres en c

Apr 17th, 2023
598
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.05 KB | None | 0 0
  1. //Elimina caracteres de una cadena en C
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. void eliminar_caracteres(char *cadena, char caracter) {
  7.     int len = strlen(cadena);//Tamano de la cadena actual
  8.     int offset = 0;
  9.    
  10.     printf ("Longitud %d \n",len);
  11.  
  12.     for (int i = 0; i < len; i++) {
  13.         if (cadena[i] != caracter) {//El caracter a suprimir no esta aqui , copiamos
  14.             cadena[i - offset] = cadena[i];//Copia en la posicion de offset de la cadena
  15.         } else {//El caracter c aparece , no se copia y aumento offset
  16.             offset++;
  17.         }
  18.     }
  19.  
  20.     cadena[len - offset] = '\0';//Terminar en 0 la cadena, teniendo en cuenta los suprimidos
  21.     cadena = realloc(cadena, len - offset + 1);//realloc tamano
  22. }
  23.  
  24. int main() {
  25.     //strdup copia los caracteres hasta \0 incluido
  26.     char *cadena = strdup("Hola mundo!");//Hay que liberar esta zona free
  27.  
  28.     printf("%s\n", cadena);//Original
  29.     eliminar_caracteres(cadena, 'o');
  30.     printf("%s\n", cadena);//Filtrado
  31.     free(cadena);
  32.     return 0;
  33. }
  34.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement