Cod sursa(job #1360661)

Utilizator BogdanChelesCheles Bogdan-Andrei BogdanCheles Data 25 februarie 2015 17:07:44
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.36 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char *c;
    int ok1=0,ok2=0,cap=500,k=0,rulare=0;
    FILE *f;
    FILE *fid;
    f=fopen("convertor.in","r");
    fid=fopen("convertor.out","w");
    c=malloc(cap*sizeof(char));
    while(fscanf(f,"%c",&c[k])==1)
    {
        if(k==cap)
        {
            cap=2*cap;
            c=realloc(c,cap*sizeof(char));
        }
        if(c[k]=='}' && rulare==0)
        {
            //fseek(f, 0, SEEK_SET);
            rulare=1;
            ok1=0;
            fprintf(fid,",");
        }
        if(c[k]=='"' && rulare==0)
        {
            if(ok1==0)
            ok1=1;
            else
            ok1=-1;
        }
        if(c[k]==',')
        {
            ok1=0;
            fprintf(fid,",");
        }
        if(ok1==1 && c[k]!='"' && rulare==0)
            fprintf(fid,"%c",c[k]);
        if(c[k]=='{' && rulare==1) fprintf(fid,"\n");
        if(c[k]==':' && rulare==1) ok1=1;
        if(ok1==1 && rulare==1)
        {
            if(c[k]=='"')
            {
                if(ok2==0)
                    ok2=1;
                else
                    ok2=0;
            }
            if((ok2==1 && c[k]!='"') || (c[k]>='0' && c[k]<='9'))
                fprintf(fid,"%c",c[k]);
        }
        k++;
    }
    fprintf(fid,",");
    return 0;
}