Cod sursa(job #1359430)

Utilizator mircea_marian.popaPopa Mircea-Marian mircea_marian.popa Data 24 februarie 2015 22:38:29
Problema Convertor Scor 50
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.42 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    unsigned int dt=0;
    FILE *f = fopen("convertor.in" , "rt" ), *g = fopen ("convertor.out" , "wt");
    char b ,  *tag = (char*) malloc( 1024 * sizeof(char) );
    while ( fgetc( f ) != '"' )
        continue;
    while ( b != '}')
    {
        //b == '"'
        b = fgetc(f);
        while ( b != '"')
        {
            fputc( b , g );
            b = fgetc(f);
        }
        // b == '"'
        fputc(',' , g );



        b = fgetc(f);//scap de "
        while ( ( ( b < '1' ) || ( b > '9' ) ) && ( b != '"' ) )
            b = fgetc(f);
        //b fie e cifra fie e ghilimea
        if ( b == '"' )
        {
            b = fgetc(f);
            while ( b != '"')
            {
                tag[dt] = b;
                dt++;
                b = fgetc(f);
            }
        }
        else
        {
            while ( (b > 47) && ( b < 58 ) )
            {
                tag[dt] = b;
                dt++;
                b = fgetc(f);
            }
        }
        tag[dt] = ',';
        dt++;
        b = fgetc(f);
        while ( ( b != '}' ) && ( b != '"') )
            b = fgetc(f);
    }
    fputc( '\n' , g );
    tag[dt] = '\0';
    fputs( tag , g );
    fputc( '\n' , g );
    free(tag);//b == '}'
    while ( b !=  '"' )
        b = fgetc(f);


    while ( b != EOF )//prima data e ","
    {
        while ( b != '}' )
        {
            while ( fgetc( f ) != '"' )
                continue;//citesc cheia
            //b == '"'
            b = fgetc( f );
            while ( ( ( b < '1' ) || ( b > '9' ) ) && ( b != '"' ) )
                b = fgetc(f);
            if ( b == '"' )
            {
                b = fgetc(f);
                while ( b != '"' )
                {
                    fputc( b , g );
                    b = fgetc(f);
                }
                b = fgetc(f);
            }
            else
            {
                while ( (b > 47) && ( b < 58 ) )
                {
                    fputc( b , g );
                    b = fgetc(f);
                }
            }
            fputc( ',' , g );//b e spatiu virgula sau ghilimele
            while ( ( b != '}' ) && ( b != '"') )
                b = fgetc(f);
        }
        fputc( '\n' , g );
        //b=='}'
        b = fgetc( f );
        while ( ( b != '"' ) && ( b != EOF ) )
            b = fgetc( f );
    }
    fclose(g);
    fclose(f);
    return 0;
}