Cod sursa(job #1360674)

Utilizator BogdanChelesCheles Bogdan-Andrei BogdanCheles Data 25 februarie 2015 17:09:53
Problema Convertor Scor 70
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.42 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,i;
    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)
    for(i=0;i<cap && fscanf(f,"%c",&c[k])==1;i++)
    {
        if(k==cap-1)
        {
            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;
}