此代码取自K& C编程。 R.我是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);
}
错误:
E:\Files\C\main.c:5:1: warning: return type defaults to 'int' [-Wreturn-type]
E:\Files\C\main.c: In function 'main':
E:\Files\C\main.c:14:40: error: lvalue required as left operand of assignment
E:\Files\C\main.c:21:1: warning: control reaches end of non-void function [-Wreturn-type]
答案 0 :(得分:4)
您要为 c 指定值,而不是比较。
if (c == ' ' || c == '\n' || c = '\t') state = OUT;
应该是
if (c == ' ' || c == '\n' || c == '\t') state = OUT;
您的主要功能应该是int main(void)
,并在最后添加return 0
答案 1 :(得分:2)
您要分配值而不是比较它:if (c == ' ' || c == '\n' || c = '\t')
,==
用于比较,=
用于分配。
答案 2 :(得分:0)
首先在第5行将主要功能更改为int main()
。
同样在第13行尝试使用==
使其与下面显示的方式相同。
if (c == ' ' || c == '\n' || c == '\t') state = out;
//你指定一个值
还要终止程序,最后写回0;