Pagini recente » Cod sursa (job #53235) | Cod sursa (job #38010) | Cod sursa (job #2270907) | Cod sursa (job #1634467) | Cod sursa (job #1359860)
#include <stdio.h>
#include <stdlib.h>
FILE *f_in, *f_out;
int main()
{
char c, *sir = (char *)malloc(500000);
int k = 0, i = 0;
f_in = fopen("convertor.in", "rt");
f_out = fopen("convertor.out", "wt");
c = fgetc(f_in);
//Parcurg primul obiect(caracter cu caracter ca sa aflu cheile si sa le
//scriu in fisier
//Valorile corespunzatoare primului obiect le salvez intr-un sir
while(c != '}')
{
c = fgetc(f_in);
//k ia valoarea 0 atunci cand ajung la o noua pereche cheie-valoare
if(c == ',')
k = 0;
else
{
if(c == '\"')
{
c = fgetc(f_in);
//daca k este 0, inseamna ca urmeaza o cheie pe care o scriu in fisier
if(k == 0)
{
while(c != '\"')
{
fputc(c, f_out);
c = fgetc(f_in);
}
fputc(',', f_out);
}
else
//altfel, inseamna ca urmeaza o valoare pe care o salvez in sir
{ while(c != '\"')
{
sir[i] = c;
c = fgetc(f_in);
i++;
}
sir[i] = ',';
i++;
}
k = 1;
}
else
//Daca caracterul este o cifra, atunci il scriu in sir si citesc pana ce
//nu mai intalnesc cifre.
if((c <= '9') && (c >= '0'))
{
while((c <= '9') && (c >= '0'))
{
sir[i] = c;
c = fgetc(f_in);
i++;
}
sir[i] = ',';
i++;
k = 0;
}
}
}
sir[i] = '\0';
//Dupa ce am scris toate cheile, copiez sirul
if(i != 0)
{
fputc('\n', f_out);
fputs(sir, f_out);
fputc('\n', f_out);
}
k = 1;
//Citesc caracter cu caracter pana la sfarsit si scriu valorile in fisier
while(c != EOF)
{
c = fgetc(f_in);
if(c == ':')
k = 0;
else
{
if(k == 0 && c == '\"')
{
c = fgetc(f_in);
while(c != '\"')
{
fputc(c, f_out);
c = fgetc(f_in);
}
fputc(',', f_out);
k = 1;
}
else
if((c <= '9') && (c >= '0') && k == 0)
{
while((c <= '9') && (c >= '0'))
{
fputc(c, f_out);
c = fgetc(f_in);
}
fputc(',', f_out);
k = 1;
}
if(c == '}')
fputc('\n', f_out);
}
}
fclose(f_in);
fclose(f_out);
free(sir);
return 0;
}