Pagini recente » Cod sursa (job #1341250) | Cod sursa (job #1073760) | Cod sursa (job #1358881) | Cod sursa (job #213095) | Cod sursa (job #1361780)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *f;
FILE *fid;
f=fopen("convertor.in","r");
char *c;
char *ca;
fid=fopen("convertor.out","w");
int ok1=0,ok2=0,cap=500,cap2=500,k=0,rulare=0,l=0,i=0;
c=malloc(cap*sizeof(char));
ca=malloc(cap*sizeof(char));
while(fscanf(f,"%c",&c[k])==1)
{
if(k==cap-1)
{
cap=15*cap;
c=realloc(c,cap*sizeof(char));
}
if(l==cap2-1)
{
cap2=5*cap2;
ca=realloc(ca,cap2*sizeof(char));
}
if(rulare==0 && c[k]=='}')
{
rulare=1;
ok1=0;
ok2=0;
ca[l]=',';
l++;
ca[l]='\n';
l++;
ca[l]='\0';
}
if(rulare==0 && c[k]=='"')
{
if(ok1==0)
ok1=1;
else if(ok1==1)
ok1=-1;
}
if(rulare==0 && ok1==1 && c[k]!='"')
{
ca[l]=c[k];
l++;
}
if(rulare==0 && c[k]==':')
ok1=-2;
if((ok1==1 && rulare==1 && c[k]=='"') || (ok1==-2 && c[k]=='"'))
{
if(ok2==0)
ok2=1;
else
ok2=0;
}
if(c[k]==',' && rulare==0)
{
ca[l]=',';
l++;
ok1=0;
}
if(rulare==1 && c[k]=='{') {c[k]='\n'; k++;}
if(rulare==1 && c[k]==':') ok1=1;
if((ok2==1 && c[k]!='"' && rulare==1) || (c[k]>='0' && c[k]<='9' && rulare==1) || (rulare==1 && c[k]==',') ||
(rulare==0 && c[k]!='"' && ok2==1 && ok1==-2) || (c[k]>='0' && c[k]<='9' && rulare==0 ) || (c[k]==',' && rulare==0))
{
if(c[k]==',' && rulare==1) ok1=0;
k++;
}
}
c[k]=',';
c[k+1]='\0';
fprintf(fid,"%s",ca);
fprintf(fid,"%s",c);
return 0;
}