/*
    第2種情報処理技術者試験    平成4年度・秋期・午後 問13
                                BohYoh Shibata PREPARATION
*/

#include <stdio.h>
#include <string.h>

void formout(char *, int);

main()
{
    char  inbuf[256];
    int   indent;
    FILE  *fp;

    indent = 0;
    fp = fopen("TEXT", "r");
    while (fgets(inbuf, 256, fp) != NULL) {
        switch ( inbuf[0] ) {
          case '#':
            indent += 2;
            if (indent > 10)
                indent = 10;
            formout(inbuf+1, indent);
            break;
          case '@':
            indent -= 2;
            if ( indent < 0 )
                indent = 0;
            formout(inbuf+1, indent);
            break;
          case '!':
            indent = 0;
            formout(inbuf+1, indent);
            break;
          case '-':
            formout(inbuf+1, indent);
            break;
          default:
            formout(inbuf, indent) ;
            break;
        }
    }
    fclose(fp);
}

void formout(char *inp, int indent)
{
    char    outbuf[82];
    int     i, inleng, cpleng;

    for (i = 0; i < indent; i++)
        outbuf[i] = ' ';
    inleng = strlen(inp);
    cpleng = 80 - indent;
    while ( inleng > 0 ) {
        if ( inleng > cpleng ) {
            strncpy(outbuf+i, inp, cpleng );
            outbuf[80] = '\n';
            outbuf[81] = '\0';
        } else
            strcpy(outbuf+i, inp);
        fputs(outbuf, stdout);
        inp += cpleng ;
        inleng -= cpleng;
    }
}