#include <stdio.h>
#include <string.h>
using namespace std;
void delete_enter(char c[1025])
{
c[strlen(c)-1]=0;
}
void delete_spaces(char c[1025])
{
char* p;
/// Delete space before-after ":"
for(p=strstr(c,": ");p;p=strstr(c,": "))
strcpy(p+1,p+2);
for(p=strstr(c," :");p;p=strstr(p," :"))
strcpy(p,p+1);
/// Delete space before-after ","
for(p=strstr(c," ,");p;p=strstr(c," ,"))
strcpy(p,p+1);
for(p=strstr(c,", ");p;p=strstr(p,", "))
strcpy(p+1,p+2);
/* int contor =0;
for( int i=0;i<strlen(c);i++)
{
if(c[i]=='\"' && contor%2==0)
if(c[i-1]==' ')
strcpy(c+i-1,c+i),contor++,i=i-2;
else
if(c[i]=='\"' && contor%2==0)
if(c[i+1]==' ')
strcpy(c+i,c+i+1),contor++,i=i-2;
}*/
/// Delete space before-after "["
for(p=strstr(c," [");p;p=strstr(c," ["))
strcpy(p,p+1);
for(p=strstr(c,"[ ");p;p=strstr(p,"[ "))
strcpy(p+1,p+2);
/// Delete space before-after "]"
for(p=strstr(c," ]");p;p=strstr(c," ]"))
strcpy(p,p+1);
for(p=strstr(c,"] ");p;p=strstr(p,"] "))
strcpy(p+1,p+2);
/// Delete space before-after "{"
for(p=strstr(c," {");p;p=strstr(c," {"))
strcpy(p,p+1);
for(p=strstr(c,"{ ");p;p=strstr(p,"{ "))
strcpy(p+1,p+2);
/// Delete space before-after "}"
for(p=strstr(c," }");p;p=strstr(c," }"))
strcpy(p,p+1);
for(p=strstr(c,"{ ");p;p=strstr(p,"{ "))
strcpy(p+1,p+2);
/*/// Delete " "
for(p=strstr(c," ");p;p=strstr(p," "))
strcpy(p,p+1);
*/
}
void delete_quotations(char c[1025])
{
char* p;
for(p=strstr(c,"\"");p;p=strstr(p,"\""))
strcpy(p,p+1);
}
void delete_uselessstuff(char c[1025])
{
char* p;
p=strstr(c,"[");
if(p)
strcpy(p,p+1);
p=strstr(c,"]");
if(p)
strcpy(p,p+1);
p=strstr(c,"{");
if(p)
strcpy(p,p+1);
p=strstr(c,"}");
if(p)
strcpy(p,p+1);
}
void extract_header(FILE* f, FILE* g)
{
char* p;
char copie[1025],c[1025];
int contor=0;
do
{
fgets(c,1025,f);
delete_enter(c);
delete_spaces(c);
delete_quotations(c);
strcpy(copie,c);
if(strchr(copie,':'))
for(p=strtok(copie,":,");p;p=strtok(NULL,":,"),contor++)
{
if(strchr(p,'}'))
break;
if(contor%2==0)
{
delete_uselessstuff(p);
fprintf(g,"%s,",p);
}
}
}while(strstr(c,"}")==NULL);
//printf("\n");
fseek(f,0L,SEEK_SET);
}
void extract_columns(FILE* f, FILE* g)
{
char* p;
char copie[1025],c[1025];
int contor=0;
do
{
fgets(c,1025,f);
delete_enter(c);
delete_spaces(c);
delete_quotations(c);
strcpy(copie,c);
//printf("%s\n",copie);
if(strchr(copie,':'))
for(p=strtok(copie,":,");p;p=strtok(NULL,":,"),contor++)
{
if(strchr(p,'{'))
fprintf(g,"\n");
if(contor%2==1)
{
delete_uselessstuff(p);
fprintf(g,"%s,",p);
}
}
else
if(strstr(copie,"{"))
fprintf(g,"\n");
}while(strstr(c,"]")==NULL);
}
int main()
{
FILE* f;
FILE *g;
f=fopen("convertor.in","rt");
g=fopen("convertor.out","wt");
extract_header(f,g);
extract_columns(f,g);
return 0;
}