Pagini recente » Cod sursa (job #1395156) | Cod sursa (job #496306) | Cod sursa (job #2987922) | Cod sursa (job #3198371) | Cod sursa (job #1355775)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *json, *csv;
char c, *s, aux = 'a', auxs[1000];
int i = 0, k = 1, t = 0, n, cap = 1000;
json = fopen("convertor.in", "r");
csv = fopen("convertor.out", "w");
if (!json)
{
fprintf(stderr, "Eroare! Nu am putut deschide fisierul JSON\n");
return 0;
}
if (!csv)
{
fprintf(stderr, "Eroare! Nu am putut deschide fisierul CSV\n");
return 0;
}
s = (char*) malloc (cap * sizeof (char));
c = fgetc(json);
while (c != '\"' && c != EOF)
c = fgetc(json);
while (c == '\"' && c != EOF)
c = fgetc(json);
while (c != '}' && c != EOF)
{
while (c != '\"' && c != EOF && c != '}' && c != ':')
{
if ((aux < 'a' || aux > 'z' || aux < 'A' || aux > 'Z' || aux < '0' || aux > '9') && c != '\n' && c != ' ')
{
if (i == cap)
{
cap = cap * 2;
s = (char*) realloc (s, cap * sizeof (char));
}
s[i] = c;
i++;
}
else
if ((aux >= 'a' && aux <= 'z') || (aux >= 'A' && aux <= 'Z') || (aux >= '0' && aux <= '9'))
{
s[i] = c;
i++;
}
aux = c;
c = fgetc(json);
}
if (c == '}')
break;
c = fgetc(json);
while (c == ' ')
c = fgetc(json);
if (c == ':')
while (c != ',' && c != '}' && c != EOF)
c = fgetc(json);
if (c == ',')
k++;
}
s[i] = ',';
s[i+1] = '\n';
fputs(s, csv);
fclose(json);
json = fopen("convertor.in", "r");
i = 0;
s[i] = '\0';
c = fgetc(json);
while (c != '{' && c != EOF)
c = fgetc(json);
while (c != EOF)
{
while (c == ' ' && c != EOF)
{
aux = c;
c = fgetc(json);
}
while (c != ':' && c != EOF && c != '}')
{
aux = c;
c = fgetc(json);
}
aux = c;
c = fgetc(json);
while ((c == ' ' || c == '\n' || c == '\"') && c != EOF && c != '}')
{
aux = c;
c = fgetc(json);
}
while ((c != '\"' && aux != ',' && c !='\n' && c != ']' && c != '}') && c != EOF)
{
if (c != ',')
{
if (i == cap)
{
cap = cap * 2;
s = (char*) realloc (s, cap * sizeof (char));
}
s[i] = c;
i++;
}
else
if (s[i-1] != ',')
{
if (i == cap)
{
cap = cap * 2;
s = (char*) realloc (s, cap * sizeof (char));
}
s[i] = c;
i++;
}
aux = c;
c = fgetc(json);
}
if (c == '\"')
{
if (s[i-1] != ',')
{
if (i == cap)
{
cap = cap * 2;
s = (char*) realloc (s, cap * sizeof (char));
}
s[i] = ',';
i++;
}
}
}
s[i] = ',';
s[i+1] = '\n';
s[i+2] = '\0';
n = i + 2;
for (i = 0; i < n - 3; i++)
if (s[i] == ',' && s[i+2] == ',')
strcpy (s + i + 2, s + i + 3);
if (s[n-3] == ',' && s[n-2] == ',')
{
s[n-2] = '\n';
s[n-1] = '\0';
n--;
}
auxs[0] = '\0';
for (i = 0; i < n; i++)
if (s[i] == ',')
{
t++;
if (t == k)
{
strcpy (auxs, s + i + 1);
s[i+1] = '\n';
strcpy (s + i + 2, auxs);
t = 0;
}
}
fputs(s, csv);
fclose(json);
fclose(csv);
return 0;
}