Let's review your code:
#include <stdio.h>
So far so good...
main()
{
- The
main()
function always returns
an int
. Always.
- Declaring functions without return
type is poor form, as it defaults to
int
, but people don't remember
this easy when reading code.
Moving on ...
long nc;
nc = 0;
Good form. The variable is initialized before it is used.
while (getchar() != EOF)
++nc;
This is a little complex. But one step at a time.
- The
getchar
function returns an
int
from the standard input.
- That value is then compared to
EOF
.
- If the
int
value from standard
input is not EOF
, the variable
nc
is incremented.
So to exit the while
loop, an EOF must be generated from standard input.
Note: None of the values read from the standard input are saved. Each value is discarded after the expression is evaluated.
Style: I suggest using '{' and '}' after each while
statement. This is a safe habit to get into.
printf("%ld\n", nc);
The above statement is printing (displaying) the value in nc
. The value in nc
represents the number of characters read from standard input. This statement does not display any characters from standard input.
}
Lastly, the main
program must return a value to the operating system. Two portable values are EXIT_SUCCESS
and EXIT_FAILURE
, which are defined in stdlib.h
. Specifying one of these values would also be a good habit.
BTW, there is no putchar
in the example you posted (which I copied into this answer).