Pagini recente » Cod sursa (job #2419943) | quarantine_training_1 | Cod sursa (job #2285853) | Cod sursa (job #2407766) | Cod sursa (job #1361331)
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE *fi, *fo;
char json;
int ok;
int indice1 = 0, indice2 = 0;
fi = fopen ("convertor.in", "rt");
fo = fopen ("convertor.out", "wt");
//merg pana la cheie
while (json != '"') {
fscanf(fi, "%c", &json);
}
ok = 1;
//aici afisez cheile
while (json != '}') {
fscanf(fi, "%c", &json);
//daca cursorul este pe o cheie, o afisez
if ( ok ) {
if ( json == '"') {
ok = 0;
fprintf(fo, ",");
continue;
}
fprintf(fo, "%c", json);
continue;
}
//daca nu, caut urmatoarea cheie
else if (json == ',') {
while (json != '"') {
fscanf(fi, "%c", &json);
}
ok = 1;
}
}
fprintf(fo, "\n");
fclose (fi);
fi = fopen ("convertor.in", "rt");
fscanf(fi, "%c", &json);
//aici afisez valorile
while (json != ']') {
if (json == '{') {
while (json != '}') {
fscanf(fi, "%c", &json);
//afisez valoarea (sir de caractere)
if ( indice1 ) {
if ( json == '"') {
indice1 = 0;
fprintf(fo, ",");
continue;
}
fprintf(fo, "%c", json);
continue;
}
//afisez valoarea (intreg)
if ( indice2 ) {
if ( ( json == ',') || (json == '}') || (json == '\n') ) {
indice2 = 0;
fprintf(fo, ",");
continue;
}
fprintf(fo, "%c", json);
continue;
}
//parcurg fisierul pana la o valoare (sau pana aflu ca nu mai sunt)
while ( (json != ':') && (json != '}') ) {
fscanf(fi, "%c", &json);
}
//daca a gasit } atunci e sfarsit de linie
if (json == '}') {
break;
}
fscanf(fi, "%c", &json);
//parcurg spatiile albe
while ( (json == ' ') || (json == '\t') || (json == '\n') ) {
fscanf(fi, "%c", &json);
}
//daca este sir de caractere intra pe primul if
if (json == '"') {
indice1 = 1;
}
//daca nu intra pe al doilea
else {
indice2 = 1;
fprintf(fo, "%c", json);
}
}
//trec pe urmatoarea linie
fprintf(fo, "\n");
}
else {
fscanf(fi, "%c", &json);
}
}
fclose (fi);
fclose (fo);
return 0;
}