C:下面的代码无法编译?

时间:2010-12-31 21:35:33

标签: 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); 
   } 

我得到了K&amp; R书,但有一些代码无法编译!

它给了我 - 19 C:\ Users \ Nom \ Desktop \ Untitled1.c赋值中的无效左值


编辑:现在它有效,谢谢你们,但现在它什么都没做! printf语句不起作用。它打开dos控制台,我输入任何内容,它只返回一个新行。我正在使用Dev-C ++ 4.9.9.2


编辑:我将printf语句放在while循环中,现在可以正常工作了。感谢

2 个答案:

答案 0 :(得分:6)

if (c == ' ' || c == '\n' || c = '\t')中,最后=应该是==

答案 1 :(得分:2)

       if (c == ' ' || c == '\n' || c = '\t') 

你在决赛或条款中缺少=,应该是

       if (c == ' ' || c == '\n' || c == '\t') 
                                       ^^ here