Cod sursa(job #1359117)

Utilizator BogdanChelesCheles Bogdan-Andrei BogdanCheles Data 24 februarie 2015 21:20:06
Problema Convertor Scor 70
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.84 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char *c;
    int ok1=0,ok2=0,cap=1024,i,k=0;
    FILE *f;
    FILE *fid;
    f=fopen("convertor.in","r");
    fid=fopen("convertor.out","w");
    c=malloc(cap*sizeof(char));
    for(i=0;i<cap;i++)
    {
        if(fscanf(f,"%c",&c[i])==1){
                k++;
        if(k==cap-1) {
                cap=2*cap;
                c=realloc(c,cap*sizeof(char));}
        if(c[i]=='}')
        {
            fprintf(fid,",");
            break;
        }
        if(c[i]=='"')
        {
            if(ok1==0)
            ok1=1;
            else
            ok1=-1;
        }
        if(c[i]==',')
        {
            ok1=0;
            fprintf(fid,",");
        }
        if(ok1==1 && c[i]!='"')
            fprintf(fid,"%c",c[i]);
        }
    }
    ok1=0;
    fseek(f, 0, SEEK_SET);
    for(i=0;i<cap;i++)
    {
        if(fscanf(f,"%c",&c[i])==1){
        k++;
        if(k==cap-1) {
                cap=2*cap;
                c=realloc(c,cap*sizeof(char));}
        if(c[i]==']')
        {
                fprintf(fid,",");
                break;
        }
        if(c[i]=='{') fprintf(fid,"\n");
        if(c[i]==':') ok1=1;
        if(ok1==1)
        {
            if(c[i]!=' ' && ok2 ==0 && c[i]!='"' && c[i]!='{' && c[i]!='}'  && c[i]!=':' && c[i]!=',' && c[i]!='\n')
            {
                fprintf(fid,"%c",c[i]);
            }
            if(c[i]=='"')
            {
                if(ok2==0)
                    ok2=1;
                else
                    ok2=0;
            }
            if(ok2==1 && c[i]!='"')
                fprintf(fid,"%c",c[i]);
            if(c[i]==',')
            {
                ok1=0;
                fprintf(fid,",");
            }
        }
        }
    }
    return 0;
}