Cod sursa(job #1345339)

Utilizator denisa.sanduDenisa Sandu denisa.sandu Data 17 februarie 2015 15:49:39
Problema Convertor Scor 100
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.3 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(1)
	{
		fread(&c, 1, 2097152, in);
		p=strdup(c);
		while (p[i]!='}')
		{
			if (p[i] == ',' || p[i] == '[') {
				ok = 1;
			}
			else if (p[i] == ':') {
				ok = 0;
			}
			if (ok) {
				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++;
		}
		break;
	}
	i=0;
	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;
	}
	fclose(in);
	fclose(out);
	return 0;
}