C新手找不到语法错误

时间:2010-02-20 01:11:46

标签: c

我在以下代码中找不到错误:

#include <stdio.h>
#define LOOP    0
#define ENDLOOP 1
main()
{
  int c, loop;
  loop = LOOP;
    while ((c = getchar()) loop != ENDLOOP) {
      if (c == 'e'|| c == 'E') {
        printf ("END LOOP\n");
        loop = ENDLOOP;
      }
      else if (c == 'c' || c == 'C')
        printf ("Cheese\n");
      else 
        printf ("Not Cheese\n");
    }
}

终端正在给我这个错误:

1-1.c: In function ‘main’:
1-1.c:8: error: syntax error before ‘loop’
1-1.c: At top level:
1-1.c:13: error: syntax error before ‘else’

5 个答案:

答案 0 :(得分:5)

你有问题:

((c = getchar()) loop != ENDLOOP)

应该是:

((c = getchar()) && loop != ENDLOOP)

我建议以完全不同的方式编写它:

#include <stdio.h>
int main()
{
    int c;
    while (c = getchar()) {
        if (c == 'e' || c == 'E') {
            printf ("END LOOP\n");
            break;
        }
        if (c == 'c' || c == 'C') {
            printf ("Cheese\n");
        } else {
            printf ("Not Cheese\n");
        }
    }
    return 0;
}

我认为这样做错误的机会较少。您可能还想考虑使用tolower

答案 1 :(得分:4)

您是否错过了运营商?

while ((c = getchar()) && loop != ENDLOOP) {

答案 2 :(得分:3)

至少有一个错误是你在这里错过了一个操作员:

 while ((c = getchar()) loop != ENDLOOP)

我认为你的意思是“和”,因此它应该是:

 while ((c = getchar()) && loop != ENDLOOP)

答案 3 :(得分:2)

你可以摆脱丑陋的loop != ENDLOOP条件,并在此过程中简化你的程序。

#include <stdio.h>

int main()
{
   int c;
   while (EOF != (c = getchar())) {
      if (c == 'e'|| c == 'E') {
         printf ("END LOOP\n");
         break;
      } else if (c == 'c' || c == 'C')
         printf ("Cheese\n");
      else 
         printf ("Not Cheese\n");
   }
   return 0;
}

EOF不相等的比较明确了getchar()如何终止while循环。否则,如果从标准输入中取出“e”或“E”,则break会起作用。

main前面的int,return 0是为了使它干净ANSI C,所以基本上风格,但风格很好。

答案 4 :(得分:-2)

#include<stdio.h>
#include<conio.h>

int x,y,z;
int large();
int main()
{
    printf("Enter the number");
    scanf("%d%d%d",&x,&y,&z);
    large();
    return 1;
}
int large()
{
    printf("large is %d\n",x);
}
{
    else if (y>x;&&y>z)
    {
    printf("%d the larger\n",y);
    }
    else
    {
    printf("%d larger is",x);
    }
}