[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] fallo en programa



Iñaki Albors wrote:

SoTaNeZ wrote:

Buenas.
Estoy aprendiendo c++ en linux y este programa me falla:

----------------------------------------------------
#include <iostream>

int main()
{
    int filas, columnas;
    char elCaracter;

    printf ("¿Cuantas filas? ");
    scanf ("%d", &filas);
    printf ("¿Cuantas columnas? ");
    scanf ("%d", &columnas);
    printf ("¿Cuál carácter? ");
    scanf ("%c",&elCaracter);
    for (int i = 0; i < filas; i++)
    {
        for (int j = 0; j < columnas; j++)
            printf("%c", elCaracter);
        printf("\n");
    }
    return 0;
}
-------------------------------------------------------

Al escribirle el numero de columnas se salta el scanf ("%c",&elCaracter) y escribe varias lineas en blanco (las del bucle for supongo). Si cambio los %c por %s me deja meter el caracter pero sigue escribiendo las lineas en blancos. Lo he copiado exactamente del libro que estoy siguiendo, salvo que en vez de printf y scanf usa cout y cin.
He buscado info y parece que lo que hago está bien.
Gracias y un saludo.



Hola, léete el man de scanf. Refiriéndose al formato y en el caso de caracteres (%c) dice exactamente:

/The usual skip of leading white space is suppressed. To skip white space first, use an explicit space in
             the format./

O sea, que para que te salga, hay que poner algo así:

   scanf(" %c",&elCaracter);
              ^
         (Espacio en blanco)


Espero que te sirva...

Iñaki


Perdona, el espacio en blanco debe estar antes de %c...

Iñaki



Reply to: