Cod sursa(job #1359445)

Utilizator BogdanChelesCheles Bogdan-Andrei BogdanCheles Data 24 februarie 2015 22:44:51
Problema Convertor Scor 30
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.78 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char *c;
    int ok1=0,ok2=0,cap=100,k=0,i;
    FILE *f;
    FILE *fid;
    f=fopen("convertor.in","r");
    fid=fopen("convertor.out","w");
    c=malloc(cap*sizeof(char));
    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]=='}')
        {
            fprintf(fid,",");
            break;
        }
        if(c[k]=='"')
        {
            if(ok1==0)
            ok1=1;
            else
            ok1=-1;
        }
        if(c[k]==',')
        {
            ok1=0;
            fprintf(fid,",");
        }
        if(ok1==1 && c[k]!='"')
            fprintf(fid,"%c",c[k]);
        k++;
    }
    ok1=0;
    fseek(f, 0, SEEK_SET);
    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]==']')
        {
                fprintf(fid,",");
                break;
        }
        if(c[k]=='{') fprintf(fid,"\n");
        if(c[k]==':') ok1=1;
        if(ok1==1)
        {
            //if(c[k]!=' ' && ok2 ==0 && c[k]!='"' && c[k]!='{' && c[k]!='}'  && c[k]!=':' && c[k]!=',' && c[k]!='\n')
            if(c[k]>47 && c[k]<58 && ok1==0)
                fprintf(fid,"%c",c[k]);
            if(c[k]=='"')
            {
                if(ok2==0)
                    ok2=1;
                else
                    ok2=0;
            }
            if(ok2==1 && c[k]!='"')
                fprintf(fid,"%c",c[k]);
            if(c[k]==',')
            {
                ok1=0;
                fprintf(fid,",");
            }
        }
        k++;
    }
    return 0;
}