现在我正在阅读一本关于C的书,并且在书中遇到了一个我无法工作的例子。统计输入中的行数,字数和字符数
#include <stdio.h>
#define IN 1
#define OUT 0
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);
}
它应该计算输入内的行数,字数和字符数。但是,当我在终端中运行它时,它看起来什么都不做。我是否错过了某些东西,或者这个代码有问题吗?
下面是一个很好的练习:使用switch语句而不是'if's重写代码。结果将是更清晰的代码。使用更长,更具描述性的名称(例如'IN_WORD','charCount','wordCount')也会产生更清晰的代码。 – outis 2010-02-14 09:42:25
通过将实际文件重定向到标准输入而不是控制台I/O来运行代码。例;从命令行输入:myprog
Clifford
2010-02-14 11:56:01
如果最后一个字符不是换行符并且文件不为空,则行数应递增1。 – chqrlie 2017-08-15 07:38:10