开发者

Help With K&Rs Counting Chars Example

I'm working my way through K&R's 2nd edition, and I've been stumped with this seemingly simple example:

#include <stdio.h>

main(){
    double c;
    for(c = 0; ((getchar() != EOF) && (getchar() != '\n')); ++c)
        ;
    printf("%.0f\n",c);
}

It simply isn't working correctly. I added in the (getchar() != '\n') portion to end the program when I press enter, but that doesn't really help either.

Here's some sample output, using the gcc that comes with Mac OSX 10.6开发者_运维知识库 dev tools.

pool-000:Desktop user$ ./a.out 
a
0
pool-000:Desktop user$ ./a.out 
asdf

2
pool-000:Desktop user$ ./a.out 
asfasf

3

So something is obviously wrong. I'm on page 18, if that helps. This isn't homework, this is for fun!

Thanks :)


Each call to getchar() will wait for a character to be read, so you're reading more than you think per iteration of the loop.

Also, at least in my opinion, a counter is (almost) never a double, you should use an integer type such as plain old int.


The problem with doing two "getchar()" operations is that you will read TWO get chars in the conditional test... before you get to the ++c.

Ditch the "EOF" comparison and it should work as you expect.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜