【发布时间】:2012-08-08 03:11:41
【问题描述】:
我开始学习 C,我的一个朋友(比我年长)推荐了 Brian Kernighan 和 Dennis Ritchie 的 The C Programming Language。
然而,在尝试一些示例时,它们的行为与预期不同,并且与书中所写的不同。
例如,这个似乎不起作用(不打印):
#include <stdio.h>
#define IN 1
#define OUT 0
/* count lines, words, and characters in input */
int main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
return 0;
}
你认为我应该继续读这本书吗,也许只有几个错误,值得一读?或者有一本适合 C 初学者的更好的书。
编辑:我的假设是使用ENTER 键发送输入将模拟EOF,但事实并非如此。 CTRL+Z 会。
感谢您的帮助。
【问题讨论】:
-
这是一本了不起的书。如果您能按照自己的方式完成示例并进行练习,您将为自己探索 C 语言打下坚实的基础。
-
如果
ENTER触发了文件结束条件,则很难或不可能接受多行输入。
标签: c