Reemplazar un caracter de una cadena y mostrar la cadena final con espacios incluidos

publicado por: Anonymous

Básicamente mi código esta listo, el unico problema es que cuando voy a mostrar la cadena final modificada, solo me muestra la primera palabra (Cuando encuentra un espacio ignora el resto) yo se que mi programa deja de contar cuando se encuentra con “” y tambien se que el espacio cuenta como “” ademas del ENTER.

Quisiera saber alguna solución para este inconveniente, yo soy nuevo en esto del c++ y sé que mi error debe ser una tontería. Este es mi código:

void reemplazo(char *v, char c1, char c2)

{

    int i;

    for (i=0;v[i]!='';i++)
    {
        if (*(v+i)==c1)
        {
            *(v+i)=c2;
        }
    }

}

int main ()

{

    char palabra[20];
    char a,b;
    int i;

    cout << "Ingrese palabra: ";
    cin >> palabra;
    fflush(stdin);
    cout << "Ingrese caracter a reemplazar: ";
    cin >> a;
    cout << "Ingrese nuevo caracter: ";
    cin >> b;
    reemplazo(palabra,a,b);
    cout <<"resultado: ";

    for (i=0;i<20;i++)
    {
         cout<<palabra[i];
    }

    return 0;
}

solución

Como ya mencionaste, el problema es que directamente solo se está leyendo una palabra. La siguiente instrucción (enlace en inglés) debería resolver el problema:

cout << "Ingrese palabra: ";
cin.getline(palabra, 20);

Y yo quitaría la instrucción:

fflush(stdin);

fflush solo puede utilizarse con streams de salida, como stdout, el uso con stdin es indefinido, y aunque en algunos compiladores puede funcionar, no es indicado su uso así.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *