1-24 编写一个程序,查找 C 语言程序中的基本语法错误,如圆括号、方括号、花 括号不配对等。要正确处理引号(包括单引号和双引号)、转义字符序列与注释

发布时间 2023-07-20 18:04:24作者: 语巫

Archlinux

GCC 13.1.1  20230429

2023-07-20 17:55:02 星期四

 


点击查看代码
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int i, sma, med, big;
    FILE *fp;
    char tmp[100] = "";

    i = sma = med = big = 0;
    fp = fopen( "file.c", "r" );


    while( fgets( tmp, 100, fp ) != NULL )
    {
        for( i=0; tmp[i]!='\0'; i++ ){
            if( (tmp[i] == '(') && (tmp[i+1] != '\'') ) sma++;      
            else if( (tmp[i] == ')') && (tmp[i+1] != '\'') ) sma--;
            if( (tmp[i] == '[') && (tmp[i+1] != '\'') ) med++;
            else if( (tmp[i] == ']') && (tmp[i+1] != '\'') ) med--;
            if( (tmp[i] == '{') && (tmp[i+1] != '\'') ) big++;
            else if( (tmp[i] == '}') && (tmp[i+1] != '\'') ) big--;
        }
    }

    if( sma != 0 ){ printf("'(',')'多余或缺少%d个!\n", abs(sma)); }
    if( med != 0 ){ printf("'[',']'多余或缺少%d个!\n", abs(med)); }
    if( big != 0 ){ printf("'{','}'多余或缺少%d个!\n", abs(big)); }



    fclose( fp );

    return 0;
}

 


运行截图:

image

输出正确。

 


小白刚学习C语言,代码质量不高,欢迎评论。