Estoy intentando eliminar un carácter de una cadena en C. El problema que tengo con mi código es que elimina la primera instancia del carácter de la cadena, pero también lo limpia todo después de ese carácter en la cadena. Por ejemplo, la eliminación de 'L' de impresiones 'hola' 'él' en lugar de 'Heo'¿Cómo eliminar todas las apariciones de un carácter dado de una cadena en C?
int i;
char str1[30] = "Hello", *ptr1, c = 'l';
ptr1 = str1;
for (i=0; i<strlen(str1); i++)
{
if (*ptr1 == c) *ptr1 = 0;
printf("%c\n", *ptr1);
ptr1++;
}
necesito utilizar punteros para este y me gustaría mantenerlo tan simple como sea posible ya que soy un principiante en C. Gracias
Sugerencia: durante la eliminación, desea desplazar las otras letras para cubrir las que quita. '* ptr1 = 0;' no es la forma de hacerlo. –
También está utilizando un for/loop para direccionar el índice de cada char, pero nunca está utilizando el índice real (Valor de i) –
Otra cosa para recordar, en CS, las cadenas terminan nulamente. –