#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define BUFSIZE 1024
void get_column(char columns[200][200],FILE *file_json,int *nr_col);
void get_lines(FILE *file_json,FILE *file_out,int *nr_col);
int main()
{
FILE *file_json = fopen("convertor.in","r");
FILE *file_out = fopen("convertor.out","w");
int nr_col = 0,i;
char columns[200][200];
for(i = 0; i < 200; i++)
memset(columns[i],0,200);
get_column(columns,file_json,&nr_col);
for(i = 0; i < nr_col ; i++)
fprintf(file_out,"%s,",columns[i]);
fprintf(file_out,"\n");
get_lines(file_json,file_out,&nr_col);
fclose(file_json);
fclose(file_out);
return 0;
}
void get_column(char columns[200][200],FILE *file_json,int *nr_col) {
int i,j = 0,ok = 0;
char line[BUFSIZE],sample[6000];
/* Separ continutul primelor acolade */
while(fgets(line,BUFSIZE,file_json)) {
for(i = 0; i < strlen(line) && line[i] != '}'; i++) {
//printf("%c",line[i]);
if(ok || line[i] == '{') {
ok = 1;
sample[j++] = line[i];
}
}
if (line[i] == '}')
break;
}
sample[j] = 0;
j = 0;
//printf("%s",sample);
for(i = 0; i < strlen(sample); i++) {
if (sample[i] == '"') {
strncpy(columns[j++],sample + i + 1,strchr(sample + i + 1,'"') - sample - i - 1);
columns[j-1][strlen(columns[j-1])] = 0;
// printf("%s,",columns[j-1]);
(*nr_col)++;
i = strchr(sample + i + 1,'"') - sample + 1;
/* sar peste urmatoarele " sau numar */
for( ; i < strlen(sample); i++) {
if(sample[i] == '"') {
i = strchr(sample + i + 1,'"') + 1 - sample;
break;
}
if(isdigit(sample[i])) {
while(isdigit(sample[++i]))
;
break;
}
}
}
}
//printf("%s",columns[0]);
rewind(file_json);
}
void get_lines(FILE *file_json,FILE *file_out,int *nr_col) {
int k = 0,ok = 0;
char c;
while((c = fgetc(file_json)) != EOF) {
if(c == '"') { // primul " de la cheie
while((c = fgetc(file_json)) != EOF) {
if(c == '"') { // al doilea " de la cheie
ok = 1;
while((c = fgetc(file_json)) != EOF) {
if(c == '"') {
while((c = fgetc(file_json)) != EOF && c != '"')
fprintf(file_out,"%c",c);
fprintf(file_out,",");
k++;
if(k == *nr_col) {
fprintf(file_out,"\n");
k = 0;
}
ok = 0;
break;
}
else if (isdigit(c)) {
fprintf(file_out,"%c",c);
while((c = fgetc(file_json)) != EOF && isdigit(c)) {
fprintf(file_out,"%c",c);
}
fprintf(file_out,",");
k++;
if(k == *nr_col) {
fprintf(file_out,"\n");
k = 0;
}
ok = 0;
break;
}
}
if(!ok)
break;
}
}
}
}
}