Mi código no devuelve ningún valor. ¿Alguien puede ayudarme a explicar por qué no funciona?

#include<stdio.h>

int main()
{
    int nc;
    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%1d\n", nc);
}
c
0
Bill Cao 24 ene. 2018 a las 08:41

3 respuestas

La mejor respuesta

Debe ingresar EOF para salir del ciclo.

Windows: Ctrl + Z

Linux: Ctrl + D

Consulte C: ¿Cómo simular un EOF?

Solo después de que getchar() devuelva EOF se imprimirá el valor de nc.

Y %1d es efectivamente igual que %d ya que un número tiene al menos un dígito.

Si hace %10d o algo así, el número se imprimirá ocupando el espacio que hubiera estado ocupado por un número de 10 dígitos. La alineación predeterminada es correcta. Puede dejarlo alineado a la izquierda con %-10d

1
J...S 24 ene. 2018 a las 05:49

Creo que te falta la entrada cuando ejecutas el código. Debe escribir la consola después de que se complete la compilación. En este momento no está obteniendo ningún carácter de entrada para contar.

El mismo código funciona para mí. Puede verificar la siguiente captura de pantalla de ideone donde el mismo código está devolviendo la salida correcta. ingrese la descripción de la imagen aquí

0
Praful Jha 24 ene. 2018 a las 06:06

Me parece que getchar() siempre esperará a que el usuario presione enter e ingrese la siguiente línea si está al final de la secuencia en lugar de devolver EOF. Por lo tanto, la declaración del bucle siempre es verdadera. Debe comparar el valor de retorno con '\ n' si desea leer una línea.

0
BessieTheCow 24 ene. 2018 a las 05:56
48415527