Cod sursa(job #1345326)

Utilizator denisa.sanduDenisa Sandu denisa.sandu Data 17 februarie 2015 15:36:08
Problema Convertor Scor 90
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.21 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{

	char *p, c[2097152], text = 0, nr = 0;
	char cc;
	int ok = 0, print = 0, k = 0, i = 0, n = 0;
	FILE *in, *out;
	in = fopen("convertor.in","rt");
	out = fopen("convertor.out","wt");
	while (fread(&cc,1,1,in) && cc!='}')
	{
		if (cc == ',' || cc == '[') {
			ok = 1;
			continue;
		}
		else if (cc == ':') {
			ok = 0;
			continue;
		}
		if (ok) {
			if (cc == '"' && print==0)
			{
				print = 1;
				continue;
			}
			else if (cc == '"')
			{
				print = 0;
				n++;
				fprintf(out,",");
			}
		}
		if (print){
			fprintf(out,"%c", cc);
		}

	}
	fseek(in, 0, SEEK_SET);
	fprintf(out ,"\n");
	while(1)
	{
		fread(&c, 1, 2097152, in);
		p=strdup(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");
			}
		}
		break;
	}
	return 0;
}