Cod sursa(job #1345425)

Utilizator denisa.sanduDenisa Sandu denisa.sandu Data 17 februarie 2015 16:42:24
Problema Convertor Scor 100
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.13 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char *p, c[2097152], text = 0, nr = 0;
	int print = 0, k = 0, i = 0, n = 0;
	FILE *in, *out;
	in = fopen("convertor.in","rt");
	out = fopen("convertor.out","wt");
	fread(&c, 1, 2097152, in);
	p = strchr(c,'{');
	p += 1;
	while (p[i] != '{')
	{
		if (p[i] == ':') {
			p = strchr(p,',');
			if (p == NULL)
				break;
			p += 1;
			i = 0;
		}
		if (p[i] == '"' && print == 0){
			i++;
			print = 1;
		}
		else if (p[i] == '"'){
			print = 0;
			n++;
			fprintf(out,",");
		}
		if (print){
			fwrite(&p[i],1,1,out);
		}
		i++;
	}
	i = 0;
	fprintf(out, "\n");
	p=strchr(c, ':');
	while((p = strchr(p, ':')) != NULL)
	{
		p += 1;
		k = 0;
		text = nr = 0;
		while (p[k] != '"' && ( p[k] < '0' || p[k] > '9' ))
			k++;
		if (p[k] == '"'){
			k++, text = 1;
		}
		else nr = 1;
		if (text == 1)
			while (p[k] != '"')
			{
				fwrite(&p[k], 1, 1, out); 
				k++;
			}
		else if (nr == 1){
			while (p[k] >= '0' && p[k] <= '9')
			{
				fwrite(&p[k], 1, 1, out);
				k++;
			}
		}
		fprintf(out,",");
		i++;
		if (i==n){
			i=0;
			fprintf(out ,"\n");
		}
	}
	fclose(in);
	fclose(out);
	return 0;
}