PDA

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

phinds
Oct12-11, 08:21 AM
The code should do what it says it will do. You need to be more specific about what your problem is.

Borek
Oct12-11, 08:22 AM
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);
}

jtbell
Oct12-11, 09:07 AM
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....

uart
Oct12-11, 10:32 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....

Try typing some characters and ending it with control-z.

Borek
Oct12-11, 10:38 AM
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).

ember
Dec14-11, 10:27 AM
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.

ember
Dec14-11, 10:29 AM
I`m wrong,Ctrl-Z(or F6) worked.