检查括号是否匹配

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include "../Stack/stack.h"
 4 
 5 const char closMiss[] = "Close paren missing at line";
 6 const char openMiss[] = "Open paren missing at line";
 7 
 8 int main()
 9 {
10     STACK* stack;
11     char token;
12     char* dataPtr;
13     char fileID[25];
14     FILE* fpIn;
15     int lineCount = 1;
16 
17     stack = createStack();
18     printf("Enter file ID for file to be parsed:");
19     scanf("%s", fileID);
20 
21     fpIn = fopen(fileID, "r");
22     if(!fpIn){
23         printf("Error opening %s\n", fileID);
24         exit(100);
25     }
26     while ((token = fgetc(fpIn)) != EOF){
27         if(token == '\n')
28             lineCount++;
29         if(token == '('){
30             dataPtr = (char*)malloc(sizeof(char));
31             pushStack(stack, dataPtr);
32         }
33         else{
34             if(token == ')'){
35                 if(emptyStack(stack)){
36                     printf("%s %d\n", openMiss, lineCount);
37                     return 1;
38                 }
39                 else{
40                     dataPtr = (char*) popStack(stack);
41                     free(dataPtr);
42                 }
43             }
44         }
45     }
46     if(!emptyStack(stack)){
47         printf("%s %d\n", closMiss, lineCount);
48         return 1;
49     }
50     destroyStack(stack);
51 
52     printf("Parsing is OK: %d Line parsed.\n", lineCount);
53 
54     return 0;
55 }

猜你喜欢

转载自www.cnblogs.com/zhangleshan/p/12377141.html