Cod sursa(job #1357480)

Utilizator BogdanChelesCheles Bogdan-Andrei BogdanCheles Data 23 februarie 2015 22:28:08
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.98 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int cap=10024;
    char c[10024];
    int i;
    //c=malloc(cap*sizeof(char));
    int ok1=0,ok2=0,var=1;
    FILE *f,*fid;
    f=fopen("convertor.in","r");
    fid=fopen("convertor.out","w");
    if(f==NULL) printf("error");
    for(i=0;i<cap;i++)
    {
        /*if(i==cap-1)
        {
            c=realloc(c,cap*sizeof(char)+1);
            cap=cap+1;
        }*/
        fscanf(f,"%c",&c[i]);
        if(c[i]==EOF) break;
        if(c[i]=='{')
            if(var==0) var=1;
        if(c[i]=='"')
        {
            if(ok1==0)
            ok1=1;
            else
            ok1=0;
        }
        if(c[i]==':' && var==1)
        {
            ok2=1;
            fprintf(fid,",");
        }
        if(c[i]==',')
            ok2=0;
        if(c[i]=='}') var=-1;
        if(ok1==1 && ok2!=1 && c[i]!='"' && var==1)
            fprintf(fid,"%c",c[i]);
    }
    ok1=0; ok2=0; var=0;
    fclose(f);
    f=fopen("convertor.in","r");
    if(f==NULL) printf("error");
    for(i=0;i<cap;i++)
    {
        /*if(i==cap-1)
        {
            c=realloc(c,cap+1);
            cap=cap+1;
        }*/
        fscanf(f,"%c",&c[i]);
        if(c[i]==EOF) 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]!=':' && 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,",");
            }
        }
    }
    fprintf(fid,",");
    fclose(f);
    fclose(fid);
    return 0;
}