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);
}
3 respuestas
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
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.
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.
Nuevas preguntas
c
C es un lenguaje de programación de uso general utilizado para la programación del sistema (SO e integrado), bibliotecas, juegos y multiplataforma. Esta etiqueta debe usarse con preguntas generales sobre el lenguaje C, como se define en el estándar ISO 9899 (la última versión, 9899: 2018, a menos que se especifique lo contrario; también etiquete las solicitudes específicas de la versión con c89, c99, c11, etc.). C es distinto de C ++ y no debe combinarse con la etiqueta C ++ en ausencia de una razón racional.