Cod sursa(job #1359480)

Utilizator Sergiu121Sergiu Weisz Sergiu121 Data 24 februarie 2015 22:55:40
Problema Convertor Scor 20
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.78 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
	char *str;
	FILE *f, *g;
	int i = 0;

	f = fopen("convertor.in","rt");
	g = fopen("convertor.out", "wt");

	str = malloc(1024);

	fread(str, sizeof(char), 1024, f);

	while(*str != '}')
	{
		while(*str != '"')
		{
			if(*str == '}')
                break;
            if(i == 1024)
			{
				fread(str, sizeof(char), 1024, f);
				i = 0;
			}
			str++;
			i++;

		}
        if(*str == '}')
            break;
		str++;
		i++;
		while(*str != '"')
		{
			//fprintf(g, "%c", *str);
            if(*str == '}')
                break;
            if(i == 1024)
			{
				fread(str, sizeof(char), 1024, f);
				i = 0;
			}
			fprintf(g, "%c", *str);
			str++;
			i++;
		}
		fprintf(g, ",");
		while(*str != ',')
		{
            if(*str == '}')
                break;
			if(i == 1024)
			{
				fread(str, sizeof(char), 1024, f);
				i = 0;
			}
			str++;
			i++;
		}
        if(*str == '}')
            break;
		str++;
		i++;
	}
	fprintf(g, "\n");

 	fseek(f,0,SEEK_SET);

	fread(str, sizeof(char), 1024, f);

	i = 0;

    while(*str != ']')
    {
    	while(*str != ':')
    	{
    		if(i == 1024)
    		{
    			fread(str, sizeof(char), 1024, f);
    			i = 0;
    		}
    		str++;
    		i++;
    	}
        str++;
        i++;
        while(*str != '1' && *str != '2' && *str != '3' && *str != '4' && *str != '5' && *str != '6' && *str != '7' && *str != '8' && *str != '9' && *str != '0' && *str != '"')
        {
            if(i == 1024)
            {
            	fread(str, sizeof(char), 1024, f);
            	i = 0;
            }
    		str++;
    		i++;
        }
    	if(*str == '"')
    	{
    		str++;
    		while(*str != '"')
	    	{
	    		if(i == 1024)
				{
					fread(str, sizeof(char), 1024, f);
					i = 0;
				}
				fprintf(g, "%c", *str);
				str++;
				i++;
    		}
    		fprintf(g, ",");
    	}
    	else if(*str == '1' || *str == '2' || *str == '3' || *str == '4' || *str == '5' || *str == '6' || *str == '7' || *str == '8' || *str == '9' || *str == '0')
    	{
    		while(*str != ' ' && *str != '}' && *str != ',' && *str != '\n')
    		{
    			if(i == 1024)
				{
					fread(str, sizeof(char), 1024, f);
					i = 0;
				}
				fprintf(g,"%c", *str);
				str++;
				i++;
    		}
    		fprintf(g, ",");
    	}

    	while(*str != ',' && *str != '}')
    	{
	    	if(i == 1024)
			{
				fread(str, sizeof(char), 1024, f);
				i = 0;
			}
			str++;
			i++;
    	}
    	if (*str == '}')
    	{
    		while(*str != '{' && *str != ']')
    		{
	    		if(i == 1024)
				{
					fread(str, sizeof(char), 1024, f);
					i = 0;
				}
				str++;
				i++;
    		}
    		if(*str == '{')
                fprintf(g, "\n");
    		if(*str == ']')
    		{
    			fprintf(g, "\n");
    			return 0;
    		}
    	}
    }

    free(str);
	fclose(f);
	fclose(g);

	return 0;
}