Pagini recente » Cod sursa (job #1627788) | Cod sursa (job #643442) | Cod sursa (job #2506538) | Cod sursa (job #2111926) | Cod sursa (job #1347215)
#include <stdio.h>
#include <string.h>
int main ()
{
FILE *f,*g;
int i,j,a=0,b=0;
char c, p[1500],q[1500],*bf;
f=fopen("convertor.in","rt");
g=fopen("convertor.out","wt");
i=0;
int nrg=0,nrp=0,nracd=0,nraci=0,nrdp=0;//Nr ghilimele pentru spatii & shit
while(!feof(f))
{
fscanf(f,"%c",&c);
if(c == '"')
nrg++;
if( c == ',')
{
nrdp=0;
nrg=0;
}
if( c == '[' || c == ']')
nrp++;
if( c == '{')
{
nraci=0;
nracd++;
}
if(c == '}')
{
nraci++;
nracd=0;
}
if( c == ':')
nrdp++;
if( nrp == 1 && nracd==0 && (c==' ' ||c =='\n'))
continue; // Elimina spatiile intre acoloade deschise si paranteze
if( nrp == 1 && nraci==0 && (c==' ' || c =='\n'))
continue; // Elimina spatiile intre acoloade inchise si paranteze
if(nrdp == 0 && nrg==2 && (c==' ' ||c =='\n'))
continue;// Elimina spatiile intre : si ghilimele (inainte de : si dupa ghilimele)
if(nrdp == 1 && nrg==2 && (c==' ' || c =='\n'))
continue;//Elimina spatiile intre : si ghilimele (dupa : si inainte de ghilimele)
if(nraci == 1 && nracd == 0 && (c==' ' || c =='\n'))
continue;//Elimina spatiile intre o acolada inchisa si una deschisa
//Trebuie eliminate spatiile dintre [ si { si :
if(c == '\n' )
continue;
if(c == ':')
a++;
if(c == '{')
b++;
p[i]=c;
i++;
}
p[i-1]='\0';
bf=strtok(p,"{}\",\n:[]");
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,",");
}
if( i%((a/b)*2) == 0)
{
strcat(q,bf);
strcat(q,",");
strcat(q,"\n");
}
else
{
strcat(q,bf);
strcat(q,",");
}
}
}
bf=strtok(NULL,"{}\"\n,:[]");
}
fputs(q,g);
fclose(f);
fclose(g);
return 0;
}