Cod sursa(job #1358933)

Utilizator maxu08Max Alexandru maxu08 Data 24 februarie 2015 20:39:52
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.25 kb
#include<stdio.h>
#include<stdlib.h>

int main()
{
	FILE *file;
	file = fopen("convertor.in","r");

	char *sir = malloc(1210000*sizeof(char));
	int i = 0,j,k,pozinit = 0,t;
	char c;

	while ((c = fgetc(file)) != EOF) 
	{ 
		sir[i] = c;
		i++;
	}

	//for(j = 0;j < i;j++)
	//	printf("%d = %c\n",j,sir[j]);

	fclose(file);

	file = fopen("convertor.out","w");
	
	for(j = 0; j < i; j++)
	{
		if(sir[j] == '}' )
			break;
		if(sir[j] == '"')
		{
			k = j + 1;
			while(sir[k] == ' ')
				k++;
			if(sir[k] != ':')
				pozinit = j;
		}
		if(sir[j] == '"')
		{
			k = j + 1;
			while(sir[k] == ' ')
				k++;
			if(sir[k] == ':')
			{
				for(t = pozinit + 1; t < j; t++)
					fprintf(file,"%c",sir[t]);
				fprintf(file,",");
			}
		}
	}
	fprintf(file,"\n");

	for(j = 0; j < i; j++)
	{
		if(sir[j] == '}')
		{
			k = j + 1;
			while(sir[k] == ' ')
				k++;
			if(sir[k] != ']')
				fprintf(file,"\n");
		}
		if(sir[j] == ':')
		{
			k = j + 1;
			while(sir[k] == ' ')
				k++;
			if(sir[k] == '"')
				k++;
			pozinit = k;
		}
		if(sir[j] == ',')
		{
			k = j - 1;
			while(sir[k] == ' ')
				k--;
			if(sir[k] == '"')
				k--;
			//printf("%d %d %d\n",j,pozinit,k);
			for(t = pozinit; t <= k; t++)
				fprintf(file,"%c",sir[t]);
			fprintf(file,",");
		}
	}

	free(sir);
	fclose(file);

}