您的位置:首页 > 编程语言

手抄代码1-24

2016-06-06 19:34 253 查看

1-24

检查c源码的语法,圆括号,方括号,大括号是否匹配;

#include <stdio.h>
int brace, brack, paren;
void in_quote(int c);
void in_comment(void);
void search(int c);

int main(void)
{
int c;
extern int brace,  brack, paren;
while ((c=getchar()) != EOF)
{
if(c=='/')
{
if((c=getchar())=='*')
in_comment();
else
search(c);
}else if(c=='\''||c=='"')
in_quote(c);
else
search(c);
if(brace < 0)
{
printf("Unbalanced braces\n");
brace = 0;
}else if (brack<0)
{
printf("Unbalanced brackets\n");
brack =0;
}
else if (paren<0)
{
printf("Unblanced parentheses\n");
paren = 0;
}
}
if (brace>0)
printf("Unbalanced braces\n");
if(brack>0)
printf("UNbalanced brackets\n");
if (paren>0)
printf("Unbalanced parentheses\n");
return 0;
}

void search(int c)
{
extern int brace, brack, paren;
if(c=='{')
++brace;
else if(c=='}')
--brack;
else if(c=='[')
++brack;
else if(c==']')
--brack;
else if(c=='(')
++paren;
else if(c==')')
--paren;
}
void in_comment(void)
{
int c, d;
c = getchar();
d = getchar();
while(c != '*'|| d != '/')
{
c = d;
d = getchar();
}
}

void in_quote(int c)
{
int d;
while((d=getchar())!=c)
if(d=='\\')
getchar();
}


把左边减去右边后的值是否为0,否则不匹配。extern关键字外部变量声明,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: