Isa*_*aac 3 c kernighan-and-ritchie
我正在通过K&R的第二版工作,我一直被这个看似简单的例子困扰:
#include <stdio.h>
main(){
double c;
for(c = 0; ((getchar() != EOF) && (getchar() != '\n')); ++c)
;
printf("%.0f\n",c);
}
Run Code Online (Sandbox Code Playgroud)
它根本无法正常工作.我在添加(getchar() != '\n')结束时,我按进入程序部分,但这并不能真正帮助的.
这是一些示例输出,使用gccMac OSX 10.6开发工具附带的.
pool-000:Desktop user$ ./a.out
a
0
pool-000:Desktop user$ ./a.out
asdf
2
pool-000:Desktop user$ ./a.out
asfasf
3
Run Code Online (Sandbox Code Playgroud)
所以有些事情显然是错的.我在第18页,如果这有帮助的话.这不是功课,这是为了好玩!
谢谢 :)
每次调用getchar()都会等待一个字符被读取,所以你读取的次数比你在每次迭代循环中所想的要多.
此外,至少在我看来,一个计数器(几乎)永远不会是一个double,你应该使用一个整数类型,如普通的旧int.
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |