Cod sursa(job #1361039)

Utilizator alexandru.cosminaAlexandru Cosmina-Valentina alexandru.cosmina Data 25 februarie 2015 19:18:11
Problema Convertor Scor 60
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.52 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	char *s;
	int count = 1;
	long int dim;
	long int i;
	char *doi;
	int ok = 0;
	int cadru = 0;

	FILE *f = fopen("convertor.in", "rb");
	FILE *g = fopen("convertor.out", "w");

	fseek(f,0,2);
	dim = ftell(f);
	fseek(f,0,0);

	s = (char *)malloc(dim*sizeof(char));

	fread(s,sizeof(char),dim,f);

	i = 0;

	doi = (char *)malloc(dim*sizeof(char));

	memcpy(doi, "n", 1);

	while (i != strlen(s))
	{
		switch (cadru)
		{
			case 0:
				while (s[i] != '"' && i != strlen(s) && (s[i] < '0' || s[i] > '9'))
				{
					if (s[i] == '}' && ok == 0)
					{
							ok = 1;
							//memcpy(doi, doi + 1, strlen(doi));

							fprintf(g, "\n%s", doi + 1);						
					}
					if (s[i] == '{' && ok == 1) 
					{
						fprintf(g, "\n");
					}
					i++;
				}
				cadru = 1;
				break;

			case 1:
				if (s[i] == '"')
				{
					i++;
					while (s[i] != '"')
					{
						if (count % 2 == 0 && ok == 0)
								strncat(doi, s + i, 1);
						else if((ok == 1 && count % 2 == 0) || (ok == 0 && count % 2 == 1)) fprintf(g, "%c", s[i]);
						i++;
					}
					i++;
				}
				else
					while (s[i] >= '0' && s[i] <= '9' && i != strlen(s))
					{
						if (count % 2 == 0 && ok == 0)
								strncat(doi, s + i, 1);
						else fprintf(g, "%c", s[i]);
						i++;
					}
				if (count % 2 == 0 && ok == 0)
						strcat(doi, ",");
				else if(count % 2 == 0 || (count % 2 == 1 && ok == 0)) fprintf(g, ",");

				count++;
				cadru = 0;
				break;
		}
	}

	fprintf(g, "\n");

	fclose(f);
	fclose(g);
	return 0;
}