#include<stdio.h>
#include<stdlib.h>
int main()
{
char c, **key, ***val;
int dp=0, i=0, j=0, k=0, nkey=0, nmax=100000;
//nkey=numarul de chei dintr-un obiect;
//nmax=nr maxim de obiecte;
FILE *f=fopen("convertor.in","rt");
FILE *g=fopen("convertor.out","wt");
while(c!='}')
{
fscanf(f,"%c",&c);
if(c==':') nkey++;
}
fseek(f,0,0);
key=(char **)calloc(nkey, sizeof(char *));
for(i=0;i<nkey;i++)
key[i]=(char *)calloc(1024, sizeof(char));
val=(char ***)calloc(nmax, sizeof(char **));
for(i=0;i<nmax;i++)
{
val[i]=(char **)calloc(nkey, sizeof(char *));
for(j=0;j<nkey;j++)
val[i][j]=(char *)calloc(1024, sizeof(char));
}
i=j=k=0;
while(c!=']')
{
fscanf(f,"%c",&c);
if(c=='{')
{
j=0;
while(c!='}')
{
fscanf(f,"%c",&c);
if(c=='"' && dp==0)
{
fscanf(f,"%c",&c);
while(c!='"')
{
key[j][k++]=c;
fscanf(f,"%c",&c);
}
k=0;
}
else
{
if(c==':') dp=1;
else
{
if(dp==1 && (c!=' ' && c!='\n'))
{
if(c=='"') fscanf(f,"%c",&c);
while(c!='"' && c!=',')
{
val[i][j][k++]=c;
fscanf(f,"%c",&c);
}
j++;
dp=k=0;
}
}
}
}
i++;
}
}
int i1,j1;
for(i1=0;i1<nkey;i1++)
fprintf(g,"%s,",key[i1]);
fprintf(g,"\n");
for(i1=0;i1<i;i1++)
{
for(j1=0;j1<j;j1++)
fprintf(g,"%s,",val[i1][j1]);
fprintf(g,"\n");
}
free(key);
free(val);
return 0;
}