Hello folks,

I have started to write this simple program that reads from keyboard, stores the on tags (aka <html>) into a 2-D array, and stores the off-tags (aka. </html>) into another. then print out both arrays (stacks).

The code contains 4 functions plus main function. two push functions, and 2 write tags functions.

I am having a problem with storing / printing the OFF-TAGS of the original string.

Could someone help me out in this asap

Code:
#include <stdio.h>
#define B_OPEN '<'
#define B_CLOSE '>'
#define BRACKET_MAX 10
#define B_CHAR_MAX 7

char bracket[BRACKET_MAX][B_CHAR_MAX]={0};
char close[BRACKET_MAX][B_CHAR_MAX]={0};
int diagnosis=0;
signed char bracket_nr, close_nr = 0;
char close_char, c, bracket_char = 0;

/********************  Prototypes ***********************/
/********************************************************/
/********************************************************/
int push (void);
int writetags (void);
int push2(void);
int writetags2 (void);

/********************   Main      ***********************/
/********************************************************/
/********************************************************/
int main (void){

    char c=0;
    bracket_nr=-1;
    close_nr=-1;

    diagnosis=0;
    while((c=getchar())!=EOF && c!='\n'){
        if(c==B_OPEN){
          if (c=='/'){diagnosis=push2();} //
            else if (c!='/')  {diagnosis=push();}
           
   }
 switch (diagnosis){
 case -3:
 printf("infinate bracket.\n");
 break;
 case -5:
 printf("Too Large Bracket.\n");
 break;
 case -7:
 printf("Too many bracket.\n");
 break;
 
  };
 if (diagnosis < 0)
 break;
 
 
 };
 if(diagnosis==0){
 printf("No brackets.\n");
 
 }else if (diagnosis > 0){
       printf("You have written %d brackets; they are:\n",diagnosis);
       writetags();
      
       writetags2(); 
       }else{
      printf("Text contains errors.\n");
       
       };
       system ("PAUSE");
       return diagnosis;

 };



/******************** Push Function**********************/
/********************************************************/
/********************************************************/
     int push (void){

     char c = 0;
     char bracket_char =0;
     
     c=getchar();
     bracket_nr++;
     if(bracket_nr>=BRACKET_MAX)
     return (diagnosis = -7); //to many tags
     diagnosis=bracket_nr+1;
     for(bracket_char=0;c!=EOF && c!='\n' && c!=B_CLOSE && bracket_char<B_CHAR_MAX;bracket_char++, c=getchar()){
   //record tag name into the stack bracket
   bracket[bracket_nr][bracket_char]=c;
   };
   bracket[bracket_nr][bracket_char]='\0';
   if(c==B_CLOSE){
     return diagnosis; 
   }else if (bracket_char>=B_CHAR_MAX){
     return(diagnosis=-5);
   }else if (c==EOF || c=='\n')
     return (diagnosis=-3);
   return diagnosis;
 };
 
 
 
 
 
/******************** Push2 Function**********************/
/********************************************************/
/********************************************************/
     int push2 (void){


     char c =0;
     char close_char =0;
     
     c=getchar();
     close_nr++;

     if(close_nr>=BRACKET_MAX)
     return (diagnosis = -7); //to many tags
     diagnosis=close_nr+1;
     for(close_char=0;c!=EOF && c!='\n' && c!=B_CLOSE && close_char<B_CHAR_MAX;close_char++, c=getchar()){
   //record tag name into the stack bracket
   close[close_nr][close_char]=c;
   
   };
   close[close_nr][close_char]='\0';
   if(c==B_CLOSE){
 return diagnosis; 
   
   }else if (close_char>=B_CHAR_MAX){
  return(diagnosis=-5);
   
   }else if (c==EOF || c=='\n')
  return (diagnosis=-3);
   return diagnosis;
 };
 
 
 
/********************  writetags function ***************/
/********************************************************/
/********************************************************/
int writetags (void) {

printf("The opening tags are:\n");
    
for(;bracket_nr>=0; bracket_nr--){
    for(bracket_char=0; bracket[bracket_nr][bracket_char]!='\0'; bracket_char++){
   putchar(bracket[bracket_nr][bracket_char]);
  }
     putchar('\n');
}
return 0;  
};
 
 


/********************  writetags2 function ***************/
/********************************************************/
/********************************************************/
int writetags2 (void) {

 printf("And the Closing Tags are:\n");
for(;close_nr>=0; close_nr--){
    for(close_char=0; close[close_nr][close_char]!='\0'; close_char++){
   putchar(close[close_nr][close_char]);
  } 
     putchar('\n');
}      
};