Vamos a revisar su código:
#include <stdio.h>
Hasta aquí todo bien ...
main()
{
- La función
main()
siempre devuelve un int
. Siempre.
- Declaración de funciones sin retorno tipo es la falta de forma, ya que por defecto es
int
, pero la gente no recuerda este código cuando la lectura fácil.
Pasando ...
long nc;
nc = 0;
buena forma. La variable se inicializa antes de usarse.
while (getchar() != EOF)
++nc;
Esto es un poco complejo. Pero un paso a la vez.
- La función
getchar
devuelve un int
de la entrada estándar.
- Ese valor se compara con
EOF
.
- Si el valor
int
de entrada estándar es no EOF
, la variable nc
se incrementa.
Para salir del lazo while
, se debe generar un EOF a partir de la entrada estándar.
Nota: Ninguno de los valores leídos de la entrada estándar son salvados . Cada valor se descarta después de que se evalúa la expresión.
Estilo: Sugiero usar '{' y '}' después de cada declaración while
. Este es un hábito seguro para entrar.
printf("%ld\n", nc);
La declaración anterior es la impresión (que muestra) el valor en nc
. El valor en nc
representa el número de caracteres leídos de la entrada estándar. Esta instrucción hace no muestra cualquier carácter de la entrada estándar.
}
Por último, el programa main
debe devolver un valor al sistema operativo. Dos valores portátiles son EXIT_SUCCESS
y EXIT_FAILURE
, que se definen en stdlib.h
. Especificar uno de estos valores también sería un buen hábito.
Por cierto, no hay putchar
en el ejemplo que ha publicado (que he copiado en esta respuesta).
Umm ... no hay putchar() en este código. – SoapBox
¿De qué 'putchar()' estás hablando? – mob
¡Creo que has publicado el programa equivocado de K & R! –