编写一个程序,用于对C源程序进行括号匹配检查,并将检查结果输出到文件中。 程序应检查输入源程序中左右大括号、小括号的个数是否相等,并且符合C语言语法规定的括号嵌套规则,不得交叉嵌套。输入文件最长不超过500个字符。 本程序只检查括号是否匹配,不用对输入源程序中的其它语法成份进行检查。 【输入文件】 输入文件为当前目录下的check.in,是一段任意的C程序。 【输出文件】 输出文件为当前目录下的check.out。该文件只有一行,是一个单词"True"或"False"。如果没有括号匹配错误则输出"True",否则输出"False"。
时间: 2024-01-22 16:19:01 浏览: 104
下面是一个C语言程序,用于对输入的C源程序进行括号匹配检查,并将检查结果输出到文件中。
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 500
int main()
{
char str[MAX_LEN];
int len, i, lcnt = 0, rcnt = 0, bcnt = 0, flag = 1;
FILE *fin, *fout;
fin = fopen("check.in", "r");
fout = fopen("check.out", "w");
fgets(str, MAX_LEN, fin);
len = strlen(str);
for(i = 0; i < len; i++)
{
if(str[i] == '(')
lcnt++;
else if(str[i] == ')')
rcnt++;
else if(str[i] == '{')
bcnt++;
else if(str[i] == '}')
bcnt--;
if(rcnt > lcnt || bcnt < 0)
{
flag = 0;
break;
}
}
if(lcnt == rcnt && bcnt == 0 && flag == 1)
fprintf(fout, "True\n");
else
fprintf(fout, "False\n");
fclose(fin);
fclose(fout);
return 0;
}
```
程序首先打开输入文件"check.in"和输出文件"check.out",然后读入输入文件中的字符串。接着,程序遍历字符串中的每一个字符,统计左右括号和花括号的个数,并检查括号的匹配情况。如果检测到右括号比左括号多或者花括号的数量小于0,则说明括号嵌套不符合规则,程序将设置一个标志位flag为0。遍历完成后,如果左右括号和花括号的数量相等且flag为1,则输出True,否则输出False。
该程序只检查括号是否匹配,不对其他语法成份进行检查。
阅读全文