Pagini recente » Cod sursa (job #2406295) | Cod sursa (job #1888187) | Cod sursa (job #1347190) | Cod sursa (job #1343942) | Cod sursa (job #1350311)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *f,*g;
char c,*p,*q=NULL;
int i,j,nrg=0,nrdp=0,nra=0,adp=0,dim;
if((f = fopen("convertor.in","rt")) == NULL || (g=fopen("convertor.out","wt")) == NULL)
perror("NU S-A PUTUT DESCHIDE FISIERUL");
i=0;
j=0;
fseek(f,0,2);
dim=ftell(f);
fseek(f,0,0);
p=malloc((dim)*sizeof(char));
q=malloc(dim*sizeof(char));
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);
free(q);free(p);
fclose(f);fclose(g);
return 0;
}