Cod sursa(job #1349084)

Utilizator RobertBBadea Corneliu Robert RobertB Data 19 februarie 2015 23:20:47
Problema Convertor Scor 30
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.15 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* seek_char(char* p, const char ch)
{
	do{
		p++;
	}while(*p != ch && *p != '\0');

	return p;
}

int main()
{
	FILE* f = fopen("convertor.in","rt");
	FILE* g = fopen("convertor.out","wt");

	//find file size
	fseek(f, 0, SEEK_END); 
	long int size = ftell(f);
	rewind(f);

	//read JSON
	char* string = malloc(sizeof(char) * size + 1);
	fread(string, sizeof(char), size, f);
	char* beg = string;

	//parse
	char* obj_end = seek_char(string, '}');
	while(string < obj_end) {
		string = seek_char(string, '\"');
		string++;
		while(*string != '\"') {
			fprintf(g, "%c", *string);
			string++;
		}
		fprintf(g, ",");
		string = seek_char(string, ',');
	}
	string = beg;
	while(string < beg + size) {
		string = seek_char(string, '{');
		if(*string == '\0') break;
		obj_end = seek_char(string, '}');
		fprintf(g, "\n");
		while(string < obj_end) {
			string = seek_char(string, ':');
			string = seek_char(string, '\"');
			string++;
			printf("1\n");
			while(*string != '\"') {

				fprintf(g, "%c", *string);
				string++;
			}
			fprintf(g, ",");
			string = seek_char(string, ',');
		}
		string = obj_end;
	}
}