Pagini recente » Cod sursa (job #1302128) | Cod sursa (job #2424683) | Cod sursa (job #2988986) | Cod sursa (job #3122185) | Cod sursa (job #1361510)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGHT 1024
int main () {
FILE *fi, *fo;
char json;
char sir[1024];
register int i;
int ok, poz;
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");
fseek(fi, 0, SEEK_END);
poz = ftell(fi);
fclose (fi);
fi = fopen ("convertor.in", "rt");
//aici afisez valorile
while( ftell(fi) < poz ) {
fgets(sir, MAX_LENGHT, fi);
printf("%s",sir);
for(i = 0; i < strlen(sir); i++) {
//afisez valoarea (sir de caractere)
if ( indice1 ) {
if ( sir[i] == '"') {
indice1 = 0;
fprintf(fo, ",");
continue;
}
fprintf(fo, "%c", sir[i]);
continue;
}
//afisez valoarea (intreg)
if ( indice2 ) {
if ( ( sir[i] == ',') || (sir[i] == '}') || (sir[i] == '\n') ) {
indice2 = 0;
fprintf(fo, ",");
continue;
}
fprintf(fo, "%c", sir[i]);
continue;
}
//parcurg fisierul pana la o valoare (sau pana aflu ca nu mai sunt)
while ( (sir[i] != ':') && (sir[i] != '}') ) {
if( i < strlen(sir) ) i++;
else break;
}
//daca a gasit } atunci e sfarsit de linie
if (sir[i] == '}') {
fprintf(fo, "\n");
if( i < strlen(sir) ) i++;
else break;
}
if( i < strlen(sir) ) i++;
else break;
//parcurg spatiile albe
while ( (sir[i] == ' ') || (sir[i] == '\t') || (sir[i] == '\n') ) {
if( i < strlen(sir) ) i++;
else break;
}
//daca este sir de caractere intra pe primul if
if (sir[i] == '"') {
indice1 = 1;
}
//daca nu intra pe al doilea
if ( (sir[i] >= 48) && (sir[i] <= 57) ) {
indice2 = 1;
fprintf(fo, "%c", sir[i]);
}
}
}
fclose (fi);
fclose (fo);
return 0;
}