编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
来源:互联网 发布:湖北软件开发公司 编辑:程序博客网 时间:2024/06/11 09:41
#include<stdio.h>
int brace, brack, paren;
void in_quote(int c);
void in_comment(void);
void search(int c);
main()
{
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("Unbalanced 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");
}
void search(int c)
{
extern int brace, brack, paren;
if(c == '{')
++brace;
else if(c == '}')
--brace;
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 == '\\')
int brace, brack, paren;
void in_quote(int c);
void in_comment(void);
void search(int c);
main()
{
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("Unbalanced 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");
}
void search(int c)
{
extern int brace, brack, paren;
if(c == '{')
++brace;
else if(c == '}')
--brace;
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(); //将\后的一个字符忽略掉 不进行上面的while里面的判断 防止是引号继而跳出这个while循环
}
0 0
- 编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
- 练习1-24 编写一个程序,查找C语言程序中的基本语法错误,如圆括号、方括号、花括号不配对等
- 查找C语言中的基本语法错误,如圆括号,左括号,花括号不匹配等
- 编写一个删除C语言程序中所有注释语句,正确处理带引号的字符串与字符常量
- 利用栈写一个程序, 检验文本中的圆括号、方括号、花括号是否正确嵌套.
- 练习1-23 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量
- 编写一个删除C语言源程序中的所有注释语句,要正确处理带引号的字符串和字符常量。
- 查找C语言中基本语法错误,如小括号,中括号,大括号,单引号,双引号
- 【1-23】编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。再c语言中,注释不允许嵌套。
- 假设一个数学算法中包括圆括号(),方括号[],花括号{}三种类型,编写表达式的括号是否配对
- 括号配对:假设一个数学算式中包括圆括号"()",方括号”[]"和花括号“{}”三种类型,编写一算法判断表达式的括号是否配对。
- 检验某符号(如圆括号,方括号,花括号等)是否都成对出现
- 编写一个删除c语言中的注释语句/* */的程序
- 查找c语言程序中基本的语法错误
- 假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对
- shell中的括号与引号
- 正则中圆括号()方括号[]大括号{}的区别和用法
- 用C语言编写一个包含链表的初始化、插入、删除、查找等基本操作的程序。
- Activity四大组件之一
- Andorid ,遇到bug没人帮?网络提问没有人回?那还等什么?
- 使用sublime一键格式化XML文件
- andriod中的 Application类用法
- Linux命令(5):pwd
- 编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
- reaLine()和read()
- C++ PRIMER 5th 学习小结(第三章)
- 二叉树的实现
- Android网络请求 ------ Volley的使用
- 分布函数和概率密度函数的区别
- cocos2d-JS 屏幕适配(5种适配模式)
- StringUtils中isEmpty 和isBlank的区别
- 383. Ransom Note [easy] (Python)