Cod sursa(job #1359668)

Utilizator BogdanChelesCheles Bogdan-Andrei BogdanCheles Data 25 februarie 2015 00:51:50
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.58 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char *c;
    int ok1=0,ok2=0,cap=100,k=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-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);
    while(fscanf(f,"%c",&c[k])==1)
    {
        if(k==cap-1)
        {
            cap=2*cap;
            c=realloc(c,cap*sizeof(char));
        }
        if(c[k]==']') break;
        if(c[k]=='{') fprintf(fid,"\n");
        if(c[k]==':') ok1=1;
        if(ok1==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]);
            if(c[k]!=',')
            {
                ok1=0;
                fprintf(fid,",");
            }
        }
        k++;
    }
    fprintf(fid,",");
    return 0;
}