【发布时间】:2011-10-03 21:29:08
【问题描述】:
我是 C 的初学者,我买了《C 编程语言》这本书,开始阅读并做它所说的一切。书中有一个代码,应该打印出句子的行数、单词数和字符数。这是本书的代码。
#include <stdio.h>
#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */
/* count lines, words, and characters in input */
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);
}
由于某种原因,应该使用 printf 打印出来的值没有显示出来。我真的不知道出了什么问题。如果我将 printf 放在 while 循环中,它只会打印出数字,但这不可能是正确的,因为它会在每次值更改时打印数字。
【问题讨论】:
-
我觉得没问题。如果您将其放入调试器并在您等待它到达的 printf 上放置一个断点会发生什么。是否有可能 printf 正在执行,然后在您实际看到输出之前关闭命令窗口?尝试在 printf 之后添加 getchar()。
-
请注意,您写的是 c = '\t' 而不是 c == '\t'。
-
那一定是书的错字。我还在 printf 之后放了一个 getchar() 但没有任何反应。
-
比这更重要 (==):您使用的是哪个系统以及您是如何运行程序的?
标签: c