Cod sursa(job #1357709)
Utilizator | Data | 24 februarie 2015 02:10:04 | |
---|---|---|---|
Problema | Convertor | Scor | 70 |
Compilator | c | Status | done |
Runda | rosedu_cdl_2015 | Marime | 3.26 kb |
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
char a,**b;
int i=0,j=0,y=100,z=100;
FILE *f_in,*f_out;
f_in=fopen("convertor.in","r");
f_out=fopen("convertor.out","w");
fscanf(f_in,"%c",&a);
b=(char**)malloc(sizeof(char*)*y);
while(a!='}')
{
if(a=='"')
{
b[i]=(char*)malloc(sizeof(char)*z);
fscanf(f_in,"%c",&a);
while(a!='"')
{
fprintf(f_out,"%c",a);
fscanf(f_in,"%c",&a);
}
fscanf(f_in,"%c",&a);
fprintf(f_out,",");
while(a!=':')
fscanf(f_in,"%c",&a);
fscanf(f_in,"%c",&a);
while(a!='"' && isdigit(a)==0)
fscanf(f_in,"%c",&a);
if(a=='"')
{
fscanf(f_in,"%c",&a);
while(a!='"')
{
b[i][j]=a;
j++;
if(j>z)
{
z+=100;
b[i]=(char*)realloc(b[i],sizeof(char)*z);
}
fscanf(f_in,"%c",&a);
}
fscanf(f_in,"%c",&a);
b[i][j]=',';
j++;
b[i][j]='\0';
}
else
{
while(isdigit(a))
{
b[i][j]=a;
j++;
fscanf(f_in,"%c",&a);
}
b[i][j]=',';
j++;
//fscanf(f_in,"%c",&a);
b[i][j]='\0';
}
i++;
if(i>y)
{
y+=100;
b=(char**)realloc(b,sizeof(char*)*y);
}
j=0;
}
else
{
while(a!='"' && a!='}')
{
fscanf(f_in,"%c",&a);
}
}
}
fprintf(f_out,"\n");
for(j=0;j<i;j++)
fprintf(f_out,"%s",b[j]);
while(a!=']')
{
if(a!='{')
fscanf(f_in,"%c",&a);
else
{
fprintf(f_out,"\n");
while(1)
{
while(a!=':' && a!='}')
fscanf(f_in,"%c",&a);
if(a=='}')
{
break;
}
fscanf(f_in,"%c",&a);
while(a!='"' && isdigit(a)==0)
fscanf(f_in,"%c",&a);
if(a=='"')
{
fscanf(f_in,"%c",&a);
while(a!='"')
{
fprintf(f_out,"%c",a);
fscanf(f_in,"%c",&a);
}
fprintf(f_out,",");
}
else
{
while(isdigit(a))
{
fprintf(f_out,"%c",a);
fscanf(f_in,"%c",&a);
}
fprintf(f_out,",");
}
}
}
}
fclose(f_in);
fclose(f_out);
return 0;
}