Cod sursa(job #1348742)

Utilizator cristian.cazanCristian-Claudiu Cazan cristian.cazan Data 19 februarie 2015 20:47:31
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.03 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main ()
{
    FILE *f,*g;
    int i,j,a=0,b=0,nc=0;
    char cp,c, *p,*q,*bf;
    f=fopen("convertor.in","rt");
    g=fopen("convertor.out","wt");
    if(f == NULL)
        perror("Eroare la deschiderea fisierului JSON");
    if(g == NULL)
        perror("Eroare la crearea fisierului CSV");
    i=0;
    int nrg=0;//Nr ghilimele pentru spatii & shit
    while(!feof(f))
    {
        fscanf(f,"%c",&cp);
        nc++;
        if(c == ':')
            a++;
        if(c == '{')
            b++;
    }
    p=malloc(sizeof(char)*nc);
    q=malloc(sizeof(char)*nc);
    rewind(f);
    while(!feof(f))
    {
        fscanf(f,"%c",&c);
        if(c == '"')
            nrg++;
        if(c == ':' || c == ',' || c =='{' || c == '}')
            nrg=0;
        if( nrg != 0 && c == ' ')
        {
            p[i]=c;
            i++;
            continue;
        }
        if(c == '\n' || c == ' ')
            continue;

        p[i]=c;
        i++;
    }
    p[i-1]='\0';
    bf=strtok(p,"{}\",:[]");
    i=0;
    j=0;
    while(bf != NULL)
    {
        if(strcmp(bf," ")!=0)
        {
            i++;
            if(i%2 == 1 && i< (a/b)*2 )
            {
                fprintf(g,"%s,",bf);
                if(i == (a/b)*2 -1)
                    fprintf(g,"\n");
            }
            if(i%2 == 0)
            {

                if(j == 0)
                {
                    strcpy(q,bf);
                    j++;
                    strcat(q,",");
                }
                else if( i%((a/b)*2) == 0)
                {
                    strcat(q,bf);
                    strcat(q,",");
                    strcat(q,"\n");
                }
                else
                {
                    strcat(q,bf);
                    strcat(q,",");
                }

            }

        }
        bf=strtok(NULL,"{}\",:[]");
    }
    fputs(q,g);
    fclose(f);
    fclose(g);

    return 0;
}