Duda básica de C!!!!!!

      • 38
      • mensajes
      • miembro desde
      • 15/01/05
    18/08/2005
    #1 Duda básica de C!!!!!!

    Hola a todos, tengo una consulta muy básica. Tengo que hacer un programa en el cual se ingresa una palabara, un caracter viejo y uno nuevo. El programa debe buscar el caracter viejo en la palabra y remplazarlo por el nuevo. Luego mostrar la palabra con el caracter cambiado. El programa compila, pero cuando lo ejecuto una vez que ingreso el caracter viejo y me pide el nuevo no lo puedo ingresar y me muestra directamente la palabra sin el caracter viejo.
    Otra duda que tengo es si conviene usa puts o printf si voy a mostrar strings, lo mismo con gets o scanf. Desde ya, Muchas Gracias.

    #include
    #include
    #include
    #include
    using namespace std;
    int main(int argc, char *argv[])
    {
    char palabra[20], viejo, nuevo;
    int i = 0;

    puts("Ingrese una palabra");
    gets(palabra);
    puts("Ingrese un caracter viejo");
    viejo = getchar();
    puts("Ingrese un caracter nuevo");
    nuevo = getchar();
    while ( palabra[i] != '\0')
    {
    if ( palabra[i]== viejo)
    palabra[i]=nuevo;
    i++;
    }
    printf ("La palabra queda: %s \n",palabra);


    system("PAUSE");
    return EXIT_SUCCESS;
    }

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    4 comentarios / 2065 Visitas

      • 2,582
      • mensajes
      • miembro desde
      • 16/03/04
    18/08/2005
    #2 Re: Duda básica de C!!!!!!

    eso creo que pasa porque te queda el salto de linea en el buffer donde lee, proba con scanf y printf
    Tambien es conveniente hacer un flush antes de leer, para eliminar cualquier caracter que haya quedado como basura en el buffer.

      • 11,737
      • mensajes
      • miembro desde
      • 10/06/04
    • Why so serious?
    • Moderador
    20/08/2005
    #3 Re: Duda básica de C!!!!!!

    tiene razon agustin_ramone, otra q podes hacer es usar un auxiliar...
    cuando declaras char palabra[20] tb declara un char aux[20]
    y seria mas o menos asi:

    Código:
     #include 
     #include 
     #include 
     #include 
     using namespace std;
     int main(int argc, char *argv[])
     {
     char palabra[20], aux[20], viejo, nuevo;
     int i = 0;
      
     puts("Ingrese una palabra");
     gets(palabra);
     puts("Ingrese un caracter viejo");
     viejo = getchar();
     puts("Ingrese un caracter nuevo");
     nuevo = getchar();
     while ( palabra[i] != '\0')
     {
     aux[i]=palabra[i];
    if ( palabra[i]== viejo)
     aux[i]=nuevo;
     i++;
     }
     printf ("La palabra queda: %s \n",aux);
      
      
     system("PAUSE");
     return 0; //aca please pone 0 no el EXIT_SUCCESS
     }
      • 2,582
      • mensajes
      • miembro desde
      • 16/03/04
    20/08/2005
    #4 Re: Duda básica de C!!!!!!

    esta bien,hay una solucion mas compacta (si usas borland) con la funcion kbhit de la libreria conio.h.
    Inmediatamente despues de leer un string o un caracter pones esta linea:
    while(kbhit()) getch();

    Para no tener que repetirla muchas veces podes hacer una funcion:
    void limpiar(void){
    while(kbhit()) getch();
    }

    Entonces en el codigo pones:
    gets(palabra);
    limpiar();
    gets(palabra2);
    limpiar();
    ...
    ...

    Otra forma es hacer un macro:
    #define limpiar while(kbhit()) getch();

    entonces en el programa en vez de poner limpiar(); como en el caso anterior, ahora solo pones el nombre del macro "limpiar", jejeje cada vez mas compacto

      • 38
      • mensajes
      • miembro desde
      • 15/01/05
    22/08/2005
    #5 Re: Duda básica de C!!!!!!

    Muchas Gracias por sus respuestas.