Pagini recente » Cod sursa (job #2682399) | Cod sursa (job #3202088) | Cod sursa (job #66503) | Cod sursa (job #2583950) | Cod sursa (job #1349935)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *f,*g;
char c,p[10000000],q[10000000];
short i,j,nrg=0,nrdp=0,nra=0,adp=0;
if((f = fopen("convertor.in","rt")) == NULL || (g=fopen("convertor.out","wt")) == NULL)
perror("NU S-A PUTUT DESCHIDE FISIERUL");
i=0;
j=0;
while(!feof(f))
{
fscanf(f,"%c",&c);
if( c == '\n')
continue;
if( c == '"')
{nrg++;
continue;
}
if( c == '{')
{nra++;adp=0;continue;}
if( c == ':' )
{
nrg = 0;
adp++;
nrdp++;
if(nra == 1)
{
p[i]=',';
i++;
}
if(adp != 1 )
{
q[j]=',';
j++;
}
continue;
}
if( c == ',')
{
nrg = 0;
nrdp = 0;
}
// pentru setul de chei
if( nra == 1 && nrdp == 0 && nrg == 1 )
{
p[i]=c;
i++;
}
// pentru valorile intregi ( fara ghilimele)
if( nrdp == 1 && nrg == 0 && c != ' ' && c != ',' && c != '}' && c != '{' && c != ']' && c != '[')
{
q[j]=c;
j++;
}
// pentru valorile ne intregi ( cu ghilimele)
if( nrdp == 1 && nrg == 1 && c != '}' && c != '}' && c != ',' && c != ']' && c != '[')
{
q[j]=c;
j++;
}
// acum dupa fiecare obiect trecem pe rand nou
if( c == '}' )
{
if(nra == 1 )
{
p[i]='\n';
i++;
q[j]=',';
j++;
q[j]='\n';
j++;
}else
{
q[j]=',';
j++;
q[j]='\n';
j++;
}
}
if( c == ']')
{
p[i]='\0';
q[j]='\0';
break;
}
}
fprintf(g,"%s%s",p,q);
fclose(f);fclose(g);
return 0;
}