Cod sursa(job #1357156)

Utilizator liviudanSarariu Liviu - Dan liviudan Data 23 februarie 2015 19:50:56
Problema Convertor Scor 60
Compilator c Status done
Runda rosedu_cdl_2015 Marime 3.26 kb
#include <stdio.h>
#include <ctype.h>

int main()
{
    char a,**b;
    int i=0,j=0,x,y=100,z=100,m=0;;
    FILE *f_in,*f_out;
    f_in=fopen("convertor.in","r");
    f_out=fopen("convertor.out","w");
    x=fscanf(f_in,"%c",&a);
    b=(char**)malloc(sizeof(char*)*y);
    while(a!='}')
    {
        if(a=='"')
        {
            b[i]=(char*)malloc(sizeof(char)*z);
            x=fscanf(f_in,"%c",&a);
            while(a!='"')
            {
                fprintf(f_out,"%c",a);
                x=fscanf(f_in,"%c",&a);
            }
            x=fscanf(f_in,"%c",&a);
            fprintf(f_out,",");
            while(a!=':')
                x=fscanf(f_in,"%c",&a);
            x=fscanf(f_in,"%c",&a);
            while(a!='"' && isdigit(a)==0)
                x=fscanf(f_in,"%c",&a);
            if(a=='"')
            {
                x=fscanf(f_in,"%c",&a);
                while(a!='"')
                {
                    b[i][j]=a;
                    j++;
                    if(j>z)
                    {
                        z+=100;
                        realloc(b[i],sizeof(char)*z);
                    }
                    x=fscanf(f_in,"%c",&a);
                }
                x=fscanf(f_in,"%c",&a);
                b[i][j]=',';
                j++;
                b[i][j]='\0';
            }
            else
            {
                while(isdigit(a))
                {
                    b[i][j]=a;
                    j++;
                    x=fscanf(f_in,"%c",&a);
                }
                b[i][j]=',';
                j++;
                //x=fscanf(f_in,"%c",&a);
                b[i][j]='\0';
            }
            i++;
            if(i>y)
            {
                y+=100;
                realloc(b,sizeof(char*)*y);
            }
            j=0;
        }
        else
        {
            while(a!='"' && a!='}')
            {
                x=fscanf(f_in,"%c",&a);
            }
        }

    }
    fprintf(f_out,"\n");
    for(j=0;j<i;j++)
        fprintf(f_out,"%s",b[j]);
    while(a!=']')
    {
        if(a!='{')
            x=fscanf(f_in,"%c",&a);
        else
        {
            fprintf(f_out,"\n");
            while(1)
            {
                while(a!=':' && a!='}')
                    x=fscanf(f_in,"%c",&a);
                if(a=='}')
                    {
                        break;
                    }
                x=fscanf(f_in,"%c",&a);
                while(a!='"' && isdigit(a)==0)
                    x=fscanf(f_in,"%c",&a);
                if(a=='"')
                {
                    x=fscanf(f_in,"%c",&a);
                    while(a!='"')
                    {
                        fprintf(f_out,"%c",a);
                        x=fscanf(f_in,"%c",&a);
                    }
                    fprintf(f_out,",");
                }
                else
                {
                    while(isdigit(a))
                    {
                        fprintf(f_out,"%c",a);
                        x=fscanf(f_in,"%c",&a);
                    }
                    fprintf(f_out,",");
                }
            }
        }
    }

    fclose(f_in);
    fclose(f_out);
    return 0;
}