View Full Version : C programming
physics kiddy
Oct12-11, 07:51 AM
Please explain what this C code will do :
#include <stdio.h>
/* count characters in input; 1st version */
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
'The C Programming' Book says that this code counts characters but it doesn't do the same ... why ?
Thanks
The code should do what it says it will do. You need to be more specific about what your problem is.
I assume you have compiled it and you have seen numbers printed by the program. What were they?
Place your programs in tags to make them easier to read:
#include <stdio.h>
/* count characters in input; 1st version */
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
Please tell us:
1. a sample input to the program
2. what you expected the output to be
3. the actual output
This is more precise and helpful for us, than a purely verbal description of your problem.
physics kiddy
Oct12-11, 10:15 AM
When I type in anything, say, any number or any character, it just displays the character or whatever once again in the next line. I expect the program to count the number of characters I have typed. Like :
If I type 'Physics', it must count the number of characters(7) in the word Physics. But it does do that....
When I type in anything, say, any number or any character, it just displays the character or whatever once again in the next line. I expect the program to count the number of characters I have typed. Like :
If I type 'Physics', it must count the number of characters(7) in the word Physics. But it does do that....
Try typing some characters and ending it with control-z.
It'll do, but you have to finish the input with EOF - end of file marker.
Under Linux (or any other *nix) it means entering your text, then pressing Ctrl-D. I think in Windows command line it'll be Ctrl-Z.
Edit: uart beat me. That's what happens when you google to check if it really is Ctrl-Z.
ozzimandias
Oct14-11, 03:54 AM
For Windows , pressing f6 gives the same result (EOF marker).
You can test what character is the program expect:
main()
{
long nc;
nc = 0;
printf("%c\n",EOF); //Here output nothing
while (getchar() != EOF)
++nc;
printf("%ld\n", nc); //Never be executed
}
As we saw output EOF is nothing,so none of inputs would be terminated while loop.
getchar() accept a character,which can be present as an ASCII code(One byte,Range:0~255).
But,EOF means of "End Of File",the value is -1.which used to judge when reading a file.
So,this program could be one part of file reading function,and exactly counts characters in file.
I`m wrong,Ctrl-Z(or F6) worked.
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.