开发者

Help With K&Rs Counting Chars Example

开发者 https://www.devze.com 2022-12-10 10:11 出处:网络
I\'m working my way through K&R\'s 2nd edition, and I\'ve been stumped with this seemingly simple 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

精彩评论

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