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).
putchar()are you talking about? - mob