Hola, una ayudita please

Iniciado por jgarridc, 11 Noviembre 2015, 19:08 PM

0 Miembros y 2 Visitantes están viendo este tema.

jgarridc

¿por qué no me funciona éste código?, esta hecho para contar la cantidad de dígitos de un número cualquiera, siempre entero.

#include <stdio.h>
#include <conio.h>



void main(){

    int num,cd;
    cd=0;

    printf("Introduzca numero: ");
    scanf("%d ", &num);


        while (num!=0)
            {

            num = num/10;
            cd++;
           
        }
        printf("El numero consta de %d digitos", cd);
        system("pause");
}

avesudra

#1
Hola, el código no te funciona porque tienes puesto en el scanf :

Código (cpp) [Seleccionar]
scanf("%d ", &num);

En lugar de:

Código (cpp) [Seleccionar]
scanf("%d", &num);

El comportamiento de scanf no está definido en ese formato, solo elimina los espacios antes del especificador de formato. Aquí tienes más información:

http://www.cplusplus.com/reference/cstdio/scanf/

El problema es que scanf lee todo lo que has puesto por consola y además lo que queda en el buffer, si tú le añades un espacio es como si estuviese esperando un carácter más, por eso no funciona. Date cuenta de que si pones cualquier numero y luego cualquier otro, el programa funciona, pero de forma incorrecta.

Un saludo.
Regístrate en

jgarridc

Joer, muchísimas gracias Avesudra me estaba volviendo loco, estoy aprendiendo a programar en C y estoy muy verde, pues eso, mil gracias por tu tiempo y un saludo.

avesudra

#3
Cita de: jgarridc en 11 Noviembre 2015, 19:22 PM
Joer, muchísimas gracias Avesudra me estaba volviendo loco, estoy aprendiendo a programar en C y estoy muy verde, pues eso, mil gracias por tu tiempo y un saludo.

De nada, aquí estamos para eso, ¡mucho ánimo!

PD: Una sugerencia, aunque sé que en algunas Universidades enseñan a trabajar con conio, system("pause") y fflush(stdin) y tendrás que utilizarlo casi por obligación te recomiendo que te pases por aquí:

http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html

Un saludo.
Regístrate en

jgarridc

Muchísimas gracias, estoy estudiando C por mi cuenta, por placer y toda ayuda es poca....gracias de nuevo.

furciorifa

Ya te respondieron es por el espacio esperado por scanf, te recomiendo igual no utilizar librerías que no sean estándar.