我在C语言中有以下代码:
#include <stdio.h>
#define NOERROR 0
int c;
int parentheses, brackets, braces;
void checkErrors(void);
int main()
{
extern int parentheses, brackets, braces;
extern int c;
parentheses=0; brackets=0; braces=0;
while ((c = getchar()) != EOF){
if (c == '(')
{++parentheses;}
else if (c == ')')
{--parentheses;}
else if (c == '[')
{++brackets;}
else if (c == ']')
{--brackets;}
else if (c == '{')
{++braces;}
else if (c == '}')
{--braces;}
checkErrors();
}
void checkErrors(void)
{
extern int parentheses, brackets, braces;
extern int c;
if (parentheses != NOERROR){
printf("You have missed some parentheses");
}
if (brackets != NOERROR){
printf("You have missed some brackets");
}
if (braces != NOERROR){
printf("You have missed some braces");
}
}
我收到此错误:第55行输入结束时的预期声明或声明(主函数结束时)为什么会发生这种情况?我没有错过任何括号。
由于
答案 0 :(得分:2)
while之后的声明无效。在其他之前,如果有
while ((c = getchar()) != EOF){
else if (c == '(')
while语句也应该有结束括号。
在这些陈述后放置括号
else if (c == '}')
{--braces;}
} // <==
答案 1 :(得分:1)
你从未关闭main()中的while循环。
答案 2 :(得分:0)
虽然}
未关闭循环。
使用好的编辑器。
使用Switch case,因为它在很多条件下更具可读性。
while ((c = getchar()) != EOF){
switch (c)
{
case '(':
++parentheses;
break;
case ')':
--parentheses;
break;
case '[':
++brackets;
break;
case ']':
--brackets;
break;
case '{':
++braces;
break;
case '}':
--braces;
break;
}
}