Esa no es la base para pedir una cadena, es otro programa que hace otra cosa.
Por otra parte, no soy experto en C (yo soy más de Java), pero tengo entendido que usar
gets para leer cadenas no es lo ideal.
De hecho muchos compiladores te lo indican como "inseguro", debido a que si el usuario teclea más caracteres que los que caben en el array de char, el programa produce excepción y termina abruptamente.
Es mejor usar fgets que se puede indicarle el límite de caracteres y permite hacer una entrada de datos segura.
Mira, este sería un ejemplo haciendo el ejercicio simplificado que propuse antes, leer una cadena y luego cada dos caracteres cambiarlo por un asterisco.
#include <stdio.h>
#include <stdlib.h>
int main()
{
system("cls");
char cadena[80];
printf("Ingrese una cadena de caracteres: ");
fgets(cadena, 80, stdin);
printf("\nCadena original:\n");
printf(cadena);
for (int i = 0; i < 80; i+=2)
cadena[i] = '*';
printf("\nCadena modificada:\n");
printf(cadena);
printf("\n");
system("pause");
return 0;
}
Si lo ejecutamos, veremos que funciona:
Ingrese una cadena de caracteres: esto es una cadena
Cadena original:
esto es una cadena
Cadena modificada:
*s*o*e* *n* *a*e*a*
Presione una tecla para continuar . . .
Ahí en ese código podemos ver que en el bucle podemos alterar la cadena, recorriendo las posiciones del array y cambiando los caracteres según deseamos.
Pues bien, trata de pensar cómo cambiar el código de ese bucle para cambiar CADA caracter, por el que se encuentra dos posiciones a su derecha.
Es decir, el caracter en posición
- , se ha de cambiar por el que está en [2]
El que está en posición [1], por el de posición [3]
El que está en [2] por el que está en [4].
Y así sucesivamente...
Piénsalo, intenta algo, aunque no funcione o sea un desastre.., pero inténtalo.
Si te dan una solución hecha, no adquieres ningún conocimiento.
Pero si estrujas el cerebro y desarrollas alguna idea, aunque no funcione o sea una locura, créeme que sí sacarás algo productivo de todo eso.